引子
长久以来一直都没有专门学过 JS ,因为之前有自己啃过 C++ ,又打过一段时间的算法竞赛(写得一手好意大利面条),于是自己折腾自己的网站的时候,一直都把 JS 当 C 写。但写的时候总会遇到一些奇怪的问题,于是打算花点时间看了看《你不知道的JavaScript》。写这篇文章以记录一下一段时间的学习内容,也治疗一下我不爱做笔记和总结的毛病。如果你也是一直按着别的语言的编程习惯来写 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 之类的关键字来做变量声明的工作。在for循环,我们终于声明了 i ,但 for 循环之后,我们依然在试图使用 i 。这些代码看上去都很荒唐,或许你可能认为这段代码在第一行的时候就会报 ReferenceError 以提示我们并没有定义变量 i 并停止执行。但实际真的是这样吗?
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 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实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式