javascript 數(shù)據(jù)類型和基本語法容易忽略的點

數(shù)據(jù)類型

Number

JavaScript不區(qū)分整數(shù)和浮點數(shù),統(tǒng)一用Number表示,以下都是合法的Number類型:

NaN;// NaN表示Not a Number,當無法計算結果時用NaN表示
Infinity;// Infinity表示無限大,當數(shù)值超過了JavaScript的Number所能表示的最大值時,就表示為Infinity

比較運算符

JavaScript允許對任意數(shù)據(jù)類型做比較:

false==0;//true
false===0;//false

第一種 == 比較,它會自動轉換數(shù)據(jù)類型再比較,建議避免使用,可以減少一些不必要的麻煩。
第二種 === 比較,它不會自動轉換數(shù)據(jù)類型,先比較數(shù)據(jù)類型,不一致返回false,如果一致,會繼續(xù)比較值是否相同。
【NaN】這個特殊的Number與所有其他值都不相等,包括它自己:

NaN === NaN; // false

唯一能判斷NaN的方法是通過isNaN()函數(shù):

isNaN(NaN); // true

【注】浮點數(shù)的相等比較:

1 / 3 === (1 - 2 / 3); // false

保險起見,在進行浮點類型的比較和運算的時候,如果可以選轉換成整數(shù)型,最好轉換為整數(shù)型再進行比較。

null和undefined

null表示一個“空”的值,它和0以及空字符串 '' 不同,0是一個數(shù)值,'' 表示長度為0的字符串,而null表示“空”。

JavaScript的設計者希望用null表示一個空的值,而undefined表示值未定義。事實證明,這并沒有什么卵用,區(qū)分兩者的意義不大。大多數(shù)情況下,我們都應該用null。undefined僅僅在判斷函數(shù)參數(shù)是否傳遞的情況下有用。

關于變量

strict模式

JavaScript在設計之初,為了方便初學者學習,并不強制要求用var申明變量。這個設計錯誤帶來了嚴重的后果:如果一個變量沒有通過var申明就被使用,那么該變量就自動被申明為全局變量:

i = 10; // i現(xiàn)在是全局變量

在同一個頁面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了變量i,將造成變量i互相影響,產(chǎn)生難以調試的錯誤結果。

使用var申明的變量則不是全局變量,它的范圍被限制在該變量被申明的函數(shù)體內,同名變量在不同的函數(shù)體內互不沖突。在實際項目開發(fā)中,盡量使用局部變量(有機會后面會針對這一塊做詳解)。

為了修補JavaScript這一嚴重設計缺陷,ECMA在后續(xù)規(guī)范中推出了strict模式,在strict模式下運行的JavaScript代碼,強制通過var申明變量,未使用var申明變量就使用的,將導致運行錯誤。

啟用strict模式的方法是在JavaScript代碼的第一行寫上:

'use strict';

這是一個字符串,不支持strict模式的瀏覽器會把它當做一個字符串語句執(zhí)行,支持strict模式的瀏覽器將開啟strict模式運行JavaScript。

參考資料:廖雪峰的官方網(wǎng)站:https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容