引子
長久以來一直都沒有專門學過 JS ,因為之前有自己啃過 C++ ,又打過一段時間的算法競賽(寫得一手好意大利面條),于是自己折騰自己的網(wǎng)站的時候,一直都把 JS 當 C 寫。但寫的時候總會遇到一些奇怪的問題,于是打算花點時間看了看《你不知道的JavaScript》。寫這篇文章以記錄一下一段時間的學習內(nèi)容,也治療一下我不愛做筆記和總結(jié)的毛病。如果你也是一直按著別的語言的編程習慣來寫 JS 而沒有專門去了解過它,不妨一起來了解一下 JS 的一些獨特之處。
首先來看一段代碼:
console.log("Firstly, i = " + i);// console.log("BTW, a = " + a);i = 61;console.log("Then there it got a value, i = " + i);for(var i = 1; i <= 5; i++) { console.log("In for loop, i = " + i);}console.log("At the end, i = " + i);
你可能注意到,這段代碼一開始就要輸出 i 的值,而在輸出之前我們似乎并沒有寫任何聲明和定義 i 值的語句,而再之后,我們給 i 賦了一個值,但我們依然沒有用 var 之類的關(guān)鍵字來做變量聲明的工作。在for循環(huán),我們終于聲明了 i ,但 for 循環(huán)之后,我們依然在試圖使用 i 。這些代碼看上去都很荒唐,或許你可能認為這段代碼在第一行的時候就會報 ReferenceError 以提示我們并沒有定義變量 i 并停止執(zhí)行。但實際真的是這樣嗎?
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26