## 一、算術運算的注意事項
1、操作數不是數字時,Javascript會嘗試將數據轉換為數字,轉換成功則進行算術運算,反之,則返回數字常量NaN:
~~~
var a = "123";
alert(++a); //輸出124
alert(a-2); //輸出122
alert("123ds" - 1); //輸出NaN
~~~
2、加法運算符(+)
2.1 ? 當兩個或多個數字使用“+”運算符時,執行加法算術運算。
2.2 ? 當單個數字和其他類型的數據使用“+”運算符時,首先會將兩個表達式的值轉為字符串,執行字符串運算。如alert("10"+10); //輸出1010
2.3 ? 當多個數字和其他類型的數據使用“+”運算符時,首先會從左到右根據運算符兩邊的數據類型進行判斷,是采用算術運算還是字符串運算。如alert("10"+10+5); //輸出10105;而alert(5+10+"10"); //輸出1510
## 二、全等運算符
1、數字和邏輯值按值比較,值相等,則返回true。
2、字符串具有相同字符數且對應位置的字符相同,則返回TRUE。
3、對于對象、函數和數組變量則是按引用比較,若引用同一個對象,則返回TRUE。
## 三、特殊值的比較
1、常量NaN:沒有具體數值,解釋引擎一般將其表示為一個隨機對象。
~~~
alert(NaN == NaN); //false
alert(NaN != NaN); //true
alert(NaN >= NaN); //false
alert(NaN < NaN); //false
~~~
2、null和undefined的比較:無規律,參考一下示例
~~~
alert(null == undefined); //true
alert(null != undefined); //false
alert(null >= undefined); //false
alert(null < undefined); //false
alert(null === undefined); //false
~~~
## 四:淺談typeof、instanceof和delete運算符
1、typeof運算符用于測試表達式的類型,格式為 typeof(expression);
1.1用于特殊類型:
~~~
typeof(NaN); //number類型
typeof(Infinity); //number類型
typeof(Undefined); //undefined類型
typeof(null); //object類型
~~~
1.2用于Javascript的核心類,永遠返回object:
~~~
var blog = "myblog";
var blog1 = new String("myblog");
alert(typeof blog); //輸出string
alert(typeof blog1); //輸出object
~~~
2、instanceof運算符:測試表達式是否是指定類的實例
~~~
var blog = "myblog";
var blog1 = new String("myblog");
alert(blog instanceof String); //false
alert(blog1 instanceof String); //true
~~~
3、delete運算符:破壞對象屬性,使其初始值為undefined,執行成功返回TRUE,但是delete不能刪除對象的固定屬性,如數組的length屬性
~~~
var user = new Object;
user.name = "zhang";
user.age = 20;
var b = delete user.name;
alert(b); //true
~~~
- 前言
- 一
- 二:變量
- 三:數據運算
- 四:流程控制
- 五:內建的全局函數
- 六:自定義函數
- 七:面向對象編程(OOP)
- 八:靜態成員、靜態類、枚舉、重載和覆蓋
- 九:原型鏈本質論
- 十:ECMAScript 5 增強的對象模型
- 十一:處理字符串---String類和正則表達式
- 十二:數組、多維數組和符合數組(哈希映射)
- 十三:處理日期和時間
- 十四:JavaScript內建類
- 十五:BOM之源---window對象
- 十六:BOM之源---BOM基本應用
- 十七:BOM新成就(1)--客戶端存儲數據(Storage實現)
- 十八:BOM新成就(1)--客戶端存儲數據(Web SQL DataBase實現)
- 十九--HTML5 DOM新標準---處理文檔元信息和管理交互能力
- 二十---XMLHttpRequest和AJAX解決方案