TypeOf這些知識點你了解嗎
昨天給同事一起玩耍,同事給我出了一道代碼題目,是關(guān)于typeof的,感覺挺好玩的,在此分享給大家,順便鞏固下自己對typeof知識點的總結(jié)。如有不對,請給予指出,共同進(jìn)步。
代碼是這樣的:
<!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調(diào)試器會打印什么呢?
請看,效果圖
為什么會出現(xiàn)這個結(jié)果呢?
首先分析上圖中的兩個null
因為Javascript在執(zhí)行代碼之前,會先預(yù)解析(hoisting)。
什么是預(yù)解析(hoisting)呢?
就是在JavaScript中,你可以在函數(shù)的任何位置聲明多個var語句,它們就像在函數(shù)的頂部聲明一樣發(fā)揮作用,且會給var聲明的變量賦予一個undefined的初始值。這種行為我們稱之為預(yù)解析(hoisting)。
所以呢,在執(zhí)行以上代碼前,Javascript會首先將所有的var變量(a,b,c)預(yù)解析(hoisting),當(dāng)執(zhí)行a||null時,a是undefined的,又因為是||運算,所以結(jié)果就是null咯。
c||null是一個道理。
再來看看,為什么typeof f會是undefined呢?f都沒定義,不應(yīng)該會報錯嗎?
是的,倘若我們?nèi)ナ褂靡粋€未定義的變量,瀏覽器是會報錯的。
但是,當(dāng)用typeof去判斷一個未定義的變量,將返回undefined。
那typeof判斷值類型時,是個怎么機(jī)制呢?總結(jié)如下:
1、 對于數(shù)字類型的值,typeof會返回number,注意:NaN也是一個數(shù)字類型,因為它在JavaScript中代表的是特殊非數(shù)字值。
2、 對于字符串類型的值,typeof會返回string。
3、 對于布爾類型的值,typeof會返回boolean。
4、 對于對象,數(shù)組,null而言,typeof會返回object
5、 對于函數(shù)類型而言,typeof返回function
6、 如果運算數(shù)沒有定義(不存在或未賦值),將會返回undefined。
相關(guān)文章
JavaScript面試Module?Federation實現(xiàn)原理詳解
這篇文章主要為大家介紹了JavaScript面試Module?Federation實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
layui中select,radio設(shè)置不生效的解決方法
今天小編就為大家分享一篇layui中select,radio設(shè)置不生效的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
詳解webpack-dev-server使用http-proxy解決跨域問題
這篇文章主要介紹了詳解webpack-dev-server使用http-proxy解決跨域問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
基于Javascript實現(xiàn)的不重復(fù)ID的生成器
本文介紹了js生成一個不重復(fù)的ID的函數(shù)的進(jìn)化之路,具有一定的參考價值,需要的朋友一起來看下吧2016-12-12
微信小程序網(wǎng)絡(luò)數(shù)據(jù)請求的實現(xiàn)詳解
這篇文章主要為大家介紹了微信小程序網(wǎng)絡(luò)數(shù)據(jù)請求的實現(xiàn)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

