Sorry,前兩張介紹的主題還是JavaScript,而第一章介紹了JavaScript和ECMAScript區別,所以前兩章介紹的主題應該改為ECMAScript,但是
標題就不改了因為現在人們習慣性稱之為JavaScript,所以以後的我會在內容中區分清楚。
好了,那我們這一次的主題就是ECMAScript的高級概念:
1、嚴格模式
嚴格模式是在ECMAScript 5中引入的概念,目的是為ECMAScript中定義一種不同的解析和執行模型,來解決JS中的一些不嚴謹的行為如:
一條語句的後面沒有加;等不嚴謹但是可用的行為。寫法:
在js文件的開頭添加上"use strict";
或者是在函數內部上方包含這條編譯指令:
function func(){
"use strict";
}
2、變量:
(1)、在函數中使用var定義的變量都是局部變量,不用var定義的都是全局變量如:
function func(){
var temp = 0;
}
alert(temp);//出現錯誤
而:
function func(){
temp = 10;
}
alert(temp);// 10
所以我們在以後的項目編寫中一定要注意,var這個占位符的使用。
(2)、ECMAScript中的簡單數據類型:Undefined,Null,Boolean,Number和String,還有一個復雜數據類型Object,
想查看所定義變量的數據類型,可以使用typeOf這個操作符,如 :
typeOf(true)----boolean;//一下有一個boolean對正表。
typeOf(10)------number;//
typeOf(null)-----object;//null只是一個特殊指“null”,表示一個空對象指針,所以我們在聲明一個對象的時候建議先給初始化null;var obj = null;
typeOf(wang)---undefined;//只是一個特殊值"undefined",就是指變量被var聲明但是沒有初始化
typeOf('wang')---string;
數據類型 轉換為true的值 轉化成false的值 String 任何非空字符串 ""(空字符串) Number 任何非0數字包括無窮大 0或NaN Object 任何不是Null的對象 null
(3)、number:在所有基於IEEE754的數值的浮點計算,那麼就不可以測試了和某個特定的浮點數相等,如:
var a =0.1,b = 0.2;
if(a+b == 0.3){//這種測試不要做,因為浮點小數想加在IEEE754中會產生誤差。
alert('a加b等於0.3');
}
isNaN()方法:可以檢測參數是否可以轉化為Number類型,並且NaN和任何數都不相等,所以不要用以下方法來判斷放回是否為NaN
var a = 3/0;
if(a == NaN){//這種判斷方式是不正確的
alert('不合法');
}
Number();數值轉化方法,規則太羅索了,給出幾個例子把:
Number(false);//0
Number(null);//0
Number(undefiined);//NaN
Number("999xxx");//NaN
Number("0xf");//15
Number("abc");//NaN
parseInt();處理整數,直接看例子:
parseInt("1234bbb");//1234
parseInt("");//NaN
parseInt("0xA",16);//10,推薦使用parseInt的時候都加上轉換使用的基數
parseInt("AF");//NaN
parseInt("AF",16)//175
(4)、Object的屬性和方法
Constructor:保存著用於創建當前對象的函數
hasOwnProperty(propertyName);用於檢查指定的屬性是否在當前的對象實例中,propertyName必須是以字符串格式出現
isPrototypeOf(object);用於檢查傳入的對象是否是另一個對象的原型
propertyIsEnumerable(propertyName);用於判斷給定的屬性是否可以用for-in的語句來便利