摘要:這時候控制臺看到的是對象的快照,然而點開看詳情的話是這段代碼在運行的時候,瀏覽器可能會認為需要把控制臺延遲到后臺,這種情況下,等到瀏覽器控制臺輸出對象內(nèi)容時,可能已經(jīng)運行,因此會在點開的時候顯示,這是的異步化造成的。
本書屬于基礎(chǔ)類書籍,會有比較多的基礎(chǔ)知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱;
上中下三本的讀書筆記:
《你不知道的JavaScript》 (上) 讀書筆記
《你不知道的JavaScript》 (中) 讀書筆記
《你不知道的JavaScript》 (下) 讀書筆記
第一部分 類型和語法 第二章 值43.toFixed(3) // 報錯: Invalid or unexpected token 43..toFixed(3) // "43.000"
這是因為42.toFixed(3)這里因為.被視為常量42的一部分,所以沒有.屬性訪問運算符來調(diào)用toFixed方法。而42..toFixed則沒有問題。
第四章 強制類型轉(zhuǎn)換JSON.stringify在對象中遇到undefined、function、symbol時會自動將其忽略,在數(shù)組中則會返回null,比如:
JSON.stringify([1, 23, 4, null, undefined, function(){ return 123 }]) // "[1,23,4,null,null,null]"
JS中的假值 undefined、null、false、+0、-0、NaN、""
除了空字符串外的所有字符串都是真值
所有對象都是真值
關(guān)于真假值的判斷:
new Boolean(false) // true new Number(0) // true new String("") // true Boolean("false") // true Boolean("0") // true Boolean("""") // true Boolean([]) // true Boolean({}) // true Boolean(function() {}) // true第五章 語法 結(jié)果值
語句都有個結(jié)果值:
賦值表達式 b = a 的結(jié)果值是a的值
規(guī)范定義 var 的結(jié)果值是 undefined
代碼塊 { ... } 的結(jié)果值是其最后一個語句表達式的結(jié)果
標簽語句
{ foo: bar() } 這里的 foo 是標簽語句,帶標簽的循環(huán)跳轉(zhuǎn)可以使用 continuereak 來實現(xiàn)執(zhí)行標簽所在循環(huán)的下一輪循環(huán)或跳出標簽所在循環(huán);
foo: for (var i = 0; i < 4; i++){ for (var j = 0; j < 4 ; j++){ if ((i * j) === 3){ console.log("stoping", i, j) break foo; } console.log(i, j) } } // 0 0 // 0 1 // 0 2 // 0 3 // 1 0 // 1 1 // 1 2 // stoping 1 3
這里的 break foo 不是指跳轉(zhuǎn)到標簽 foo 所在位置繼續(xù)執(zhí)行,而是跳出標簽 foo 所在的循環(huán)/代碼塊,繼續(xù)執(zhí)行后面的代碼。因此這里的標簽語句并非傳統(tǒng)意義上的 goto;
關(guān)聯(lián)
運算符有優(yōu)先級,那么如果多個相同優(yōu)先級的運算符同時出現(xiàn),執(zhí)行的順序就和關(guān)聯(lián)順序有關(guān)了,JS默認的執(zhí)行順序是從左到右,但是有時候不是,比如:
? : 三元運算符是右關(guān)聯(lián),比如? : ? : ,其實是? : (? :) 這樣的順序
= = 連等是右關(guān)聯(lián),比如 a=b=c=2,其實是 (a=(b=(c=2)))
函數(shù)參數(shù)像函數(shù)傳遞參數(shù)時,arguments 數(shù)組中對應(yīng)單元會和命名參數(shù)建立關(guān)聯(lián)(linkage)以得到相同的值;相反,不傳遞參數(shù)就不會建立關(guān)聯(lián):
function foo(a){ a=42 console.log(arguments[0]) } foo(2) // 42 foo() // undefined
注意:嚴格模式?jīng)]有建立關(guān)聯(lián)一說;
try...finallyfinally 中的代碼總是會在 try 之后執(zhí)行,即使 try 中已經(jīng) return 了,如果有 catch 的話則在 catch 之后執(zhí)行;
function foo(){ try{ return("returned") } finally { console.log("finally") } } console.log(foo()) // finally // returned
如果 finally 中拋出異常,函數(shù)會終值,如果之前 try 中已經(jīng) return 了返回值,則返回值會被丟棄;
finally 中的 return 會覆蓋 try 和 catch 中 return 的返回值;
finally 中如果沒有 return,則會返回前面 return 的返回值;
switchswitch 中的 case 執(zhí)行的匹配是 === 嚴格相等的,也就是說如果不是 true,是真值也是不通過的:
switch(true) { case ("hello" || 10): console.log("world") // 不會執(zhí)行 break; default: console.log("emmm") } // emmm
所以這里的字符串即使是真值,也是不被匹配,所以可以通過強制表達式返回 Boolean 值,比如 !!("hell0" || 10)
default 是可選的,無需放在最后一個,且并非必不可少:
switch(10){ case 1: case 2: default: console.log("hello") case 3: console.log(3) break; case 4: console.log(4) } // hello // 3
上面這個例子的邏輯是:首先找匹配的 case,沒找到則運行 default,因為其中沒有 break,所以繼續(xù)執(zhí)行 case 3 中的代碼,然后 break;
附錄 全局 DOM 變量由于瀏覽器歷史遺留問題,在創(chuàng)建帶有 id 屬性的 DOM 元素的時候也會創(chuàng)建同名的全局變量:
另外可以加入「前端下午茶交流群」微信群,長按識別下面二維碼即可加我好友,備注加群,我拉你入群~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/100748.html
相關(guān)文章
《你不知道的JavaScript》 (下) 閱讀摘要
摘要:本書屬于基礎(chǔ)類書籍,會有比較多的基礎(chǔ)知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱不錯,下冊的知識點就這么少,非常不推介看下冊上中下三本的讀書筆記你不知道的上讀書筆記你不知道的中讀書筆記你不知道的下讀書筆記第三 本書屬于基礎(chǔ)類書籍,會有比較多的基礎(chǔ)知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱; 不錯,下冊的知識點就這么少,非...
《你不知道的JavaScript》 (上) 閱讀摘要
摘要:但是如果非全局的變量如果被遮蔽了,無論如何都無法被訪問到。但是如果引擎在代碼中找到,就會完全不做任何優(yōu)化。結(jié)構(gòu)的分句中具有塊級作用域。第四章提升編譯器函數(shù)聲明會被提升,而函數(shù)表達式不會被提升。 本書屬于基礎(chǔ)類書籍,會有比較多的基礎(chǔ)知識,所以這里僅記錄平常不怎么容易注意到的知識點,不會全記,供大家和自己翻閱; 上中下三本的讀書筆記: 《你不知道的JavaScript》 (上) 讀書筆記...
2017年 最好的javascript 書籍
摘要:請記住,這些書中的一些可能不是最新的,但概念和基礎(chǔ)仍應(yīng)適用。是最好的老師之一。的秘密由部分組成。在你完成這些書后,查看書籍和最好的本土?xí)? 我看過三本,第1本,第二本,第四本。第一本買的的實體書,其他兩本看的是電子書。第一本是大名鼎鼎老道寫的,書很薄,但是非常經(jīng)典。javascirpt忍者秘籍是jquery的作者寫的,也是非常經(jīng)典。you dont kown js系列也是非常好??戳?..
H5 知識點 - 收藏集 - 掘金
摘要:目錄不要過度依賴一前端掘金毫無疑問,是一款非常優(yōu)秀的庫,它讓我們開發(fā)項目變得更加便捷容易。但是作為一個前端工作者,我們肯定也希望在我們的網(wǎng)頁里也能看到這么酷分鐘搞定常用基礎(chǔ)知識前端掘金基礎(chǔ)智商劃重點在實際開發(fā)中,已經(jīng)非常普及了。 跨域解決方案總結(jié) - 前端 - 掘金為什么需要跨域? 就得先知道同源策略. 同源策略 同源策略是為了保證數(shù)據(jù)的安全性,一個域的腳本不能去操作另外一個域的腳本的...
發(fā)表評論
0條評論
閱讀 920·2021-11-24 10:44
閱讀 2866·2021-11-11 16:54
閱讀 3374·2021-10-08 10:21
閱讀 2245·2021-08-25 09:39
閱讀 3012·2019-08-30 15:56
閱讀 3524·2019-08-30 13:46
閱讀 3555·2019-08-23 18:09
閱讀 2207·2019-08-23 17:05