1. 程式人生 > >day13 JS引入, 變數, 值型別

day13 JS引入, 變數, 值型別

一、引入JS

1、頁面級嵌入 head 和 body 都可以;
2、外部引入js檔案, 符合web標準(w3c標準)結構、樣式、行為相分離。

二、 JS 語法
1、變數宣告

單一var

2、變數命名

(1)必須以英文字母、 _ 、$ 開頭
 (2)變數名可以包括英文字母、 _ 、$、數字
 (3)不能用關鍵字和保留字

3、值型別——資料型別
a.不可改變的原始值(棧資料) :
 Number:數字;
 Boolean: true / false;
 String: 字串 "abc";
 undefined :無定義(宣告的變數沒被賦值);
 null:佔位.

原始值儲存方式
原始值存在棧記憶體(stack)裡,有底沒頂。

var num = 100;
var num1 =num;
num = 200;
console.log(num1); -->100

1)先申請一個房間"num",賦值100。
2)然後再申請一個房間"num1",賦值拷貝"num"裡面的值。(因為是拷貝值,所以改變num的值,不會影響num1裡面的值)
在這裡插入圖片描述

3)重新賦值200給房間"num",此時是重新申請一個新房間"num"賦值200,原來的房間恢復原來的編號,而裡面的值無法改變。
刪資料只是剪斷房間與資料之間的聯絡,無從查詢,只有二輪覆蓋的時候才是真正的刪除資料。
在這裡插入圖片描述

b.引用值(堆資料)

:array Object function data RegExp

儲存方式:

var arr = [1,2];
var arr1 = arr;
arr.push(3);
console.log(arr); --> [1,2,3]
console.log(arr1); -->[1,2,3]

1)定義一個數組,在棧裡面申請一個房間"arr", 在堆裡面存放值[1,2], 此時棧存放的是堆的地址"heap1001"
2)申請一個新房間’‘arr1’’,拷貝"arr1"裡面的地址,此時兩個房間都指向一個堆。因此當’‘arr’'新增一個數值後,“arr1”也會跟著變。
在這裡插入圖片描述
3)當"arr"重新賦值[1,3]後,會在堆記憶體裡重新申請一個房間。此時棧記憶體的地址發生改變。

var arr = [1,2];
var arr1 = arr;
arr = [1,3];
console.log(arr); -->[1,3]
console.log(arr1); -->[1,2]

在這裡插入圖片描述

4、語法錯誤

(1)低階錯誤(語法解析錯誤 SyntaxError)
  通篇掃描一遍,一行都執行不了
 (2)邏輯錯誤(ReferenceError)
 錯誤語句後面不會再執行
 (3)js語法錯誤
 兩個程式碼塊會相通,但一個出錯後,不會影響其他程式碼塊。
在這裡插入圖片描述
在這裡插入圖片描述