首頁 > web前端 > js教程 > 主體

TypeOf這些知識點你了解嗎_javascript技巧

WBOY
發布: 2016-05-16 15:14:33
原創
1287 人瀏覽過

昨天給同事一起玩耍,同事給我出了一道代碼題目,是關於typeof的,感覺挺好玩的,在此分享給大家,順便鞏固下自己對typeof知識點的總結。如有不對,請給予指出,共同進步。

程式碼是這樣的:

<!DOCTYPE html>
<head>
<title>typeof</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<script>
var a= a||null; 
var b= c||null; 
var c= typeof f;
console.log(a);
console.log(b);
console.log(c);
</script>
</body>
</html>
登入後複製

那麼,你說運行該程式碼,chrome偵錯器會印什麼呢?

請看,效果圖


為什麼會出現這個結果呢?

先分析上圖的兩個null


因為Javascript在執行程式碼之前,會先預先解析(hoisting)。

什麼是預解析(hoisting)呢?

就是在JavaScript中,你可以在函數的任何位置聲明多個var語句,它們就像在函數的頂部聲明一樣發揮作用,並且會給var聲明的變數賦予一個undefined的初始值。這種行為我們稱之為預解析(hoisting)。

所以呢,在執行以上程式碼前,Javascript會先將所有的var變數(a,b,c)預先解析(hoisting),當執行a||null時,a是undefined的,又因為是| |運算,所以結果就是null咯。

c||null是一個道理。

再來看看,為什麼typeof f會是undefined呢? f都沒定義,不應該會報錯嗎?

是的,倘若我們去使用一個未定義的變量,瀏覽器是會報錯的。

但是,當用typeof去判斷一個未定義的變量,將會回傳undefined。

那typeof判斷值型別時,是怎麼機制呢?總結如下:

1、 對於數字類型的值,typeof會傳回number,注意:NaN也是一個數字類型,因為它在JavaScript中代表的是特殊非數字值。

2、 字串類型的值,typeof會傳回string。

3、 對於布林類型的值,typeof會傳回boolean。

4、 對於對象,數組,null而言,typeof會傳回object

5、 對函數型別而言,typeof回傳function

6、 如果運算數沒有定義(不存在或未賦值),將會傳回undefined。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!