嚴格模式:ECMASCRIPT
中引入嚴格模式的概念。嚴格模式是為javascript
定義一種不同的解析與執行模式。在嚴格模式下,ECMASCRIPT3
中的一些不確定行為將會。
要在整個指令碼中啟用嚴格模式,可以在頂部新增如下程式碼:
"use strict";複製程式碼
一,變數
ECMAScript
的變數是鬆散型別的,所謂鬆散型別就是可以用來儲存任何型別的資料。換句話說,
每個變數僅僅是一個用於儲存值的佔位符而已。
ecmascript
有5種簡單的資料型別(也
稱為基本資料型別):
underfined,null,boolean,number,string
複製程式碼
typeof
操作符:鑑於ecmascript
是鬆散型別的。因此需要有一種手段來檢測給定變數的資料型別。
"undefined"——如果這個值未定義;
"boolean"——如果這個值是布林值;
"string"——如果這個值是字串;
"number"——如果這個值是數值;
"object"——如果這個值是物件或 null;
"function"——如果這個值是函式複製程式碼
重點:
typeof 操作符會返回一些令人迷惑但技術上卻正確的值。比如,呼叫 typeof null
會返回"object",因為特殊值 null 被認為是一個空的物件引用複製程式碼
Undefined
型別只有一個值,即特殊的 undefined
。在使用 var
宣告變數但未對其加以初始化時,
這個變數的值就是 undefined
,
例如:
var message;
alert(message == undefined); //true複製程式碼
Null
型別是第二個只有一個值的資料型別,這個特殊的值是 null
。從邏輯角度來看, null
值表
示一個空物件指標,而這也正是使用 typeof
操作符檢測 null
值時會返回"object"
的原因,
var car = null;
alert(typeof car); // "object"複製程式碼
Boolean型別:
Boolean
是ecmascript
中使用最多的一種型別。該型別只有兩個字面值。true和false.
這兩個值與數字值不是一回事。因此true不等於1
而false也不一定等於0
注意:浮點數值的最高精度是 17 位小數,但在進行算術計算時其精確度遠遠不如整數。例如, 0.1 加 0.2
的結果不是 0.3,而是 0.30000000000000004。這個小小的舍入誤差會導致無法測試特定的浮點數值。
例如:
if (a + b == 0.3){ // 不要做這樣的測試!
alert("You got 0.3.");
}
複製程式碼
parseInt()
函式在轉換字串時,更多的是看其是否符合數值模式。它會忽略字
符串前面的空格,直至找到第一個非空格字元。如果第一個字元不是數字字元或者負號, parseInt()
就會返回 NaN
指定基數會影響到轉換的輸出結果。例如:var num1 = parseInt("10", 2); //2 (按二進位制解析)
var num2 = parseInt("10", 8); //8 (按八進位制解析)
var num3 = parseInt("10", 10); //10 (按十進位制解析)
var num4 = parseInt("10", 16); //16 (按十六進位制解析)複製程式碼
操作符
一元操作符: 只能操作一個值的操作符叫做一元操作符 + -
位操作符:1 0
布林操作符: 邏輯非 ! 與 && 或 ||
關係操作符:小於<,大於>,小於等於<=和大於等於>=複製程式碼
with語句:with
語句的作用是將程式碼的作用域設定到一個特定的物件中。with
語句的語法如下。
with (expression) statement.
定義with
語句的主要目的是為了簡化多次編寫同一個物件的工作。
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
上面幾行程式碼都包含location物件。
如果使用with語句,就可以把上面程式碼改寫為:
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}複製程式碼
在這個重寫後的例子中,使用 with 語句關聯了 location 物件。這意味著在 with 語句的程式碼塊
內部,每個變數首先被認為是一個區域性變數,而如果在區域性環境中找不到該變數的定義,就會查詢
location 物件中是否有同名的屬性。如果發現了同名屬性, 則以 location 物件屬性的值作為變數的值。
嚴格模式下不允許使用 with 語句,否則將視為語法錯誤