day13 JS引入, 變數, 值型別
阿新 • • 發佈:2018-11-08
一、引入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.引用值(堆資料)
儲存方式:
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語法錯誤
兩個程式碼塊會相通,但一個出錯後,不會影響其他程式碼塊。