ES5当中var只有全局作用域和函数作用域,注意变量提升在var中的坑
前置知识
- 在ES5当中,变量的作用域只有全局作用域和函数作用域之分的,也就是说,你使用 var 关键字创建的变量,要么是全局都可以使用的,要么就是函数内部可以使用的
- 在ES5当中,var定义的变量是会变量提升的
- 在ES6当中,let是块级作用域,不会变量提升
于是乎产生了一次错误
1 | <script> |
这一段代码一看就是true
在js当中,除了 null undefined “” NaN false 这四个转化为布尔值为false,其他均为true
所以data=”动感超人”转化为布尔值为true~所以执行var flag=true;
由于var只有全局作用域和函数作用域,所以var flag为全局变量
代码改改
1 | <script> |
这一段代码呢?
结果为undefined
分析
执行流程
1.js引擎执行js代码前先看看有没有可以变量提升,函数提升),上面代码转换下实际上是这样子在执行的过程中
1 | <script> |
总结
施主,要小心,小心,再小心~阿弥陀佛
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦洁小站-属于你我的小天地!
评论