IO通讀JS高程系列(2)--基本概念

I O發表於2018-06-25

嚴格模式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型別:

Booleanecmascript中使用最多的一種型別。該型別只有兩個字面值。true和false.這兩個值與數字值不是一回事。因此true不等於1false也不一定等於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 語句,否則將視為語法錯誤


相關文章