今天面试遇到的一个问题?先问的是不var,直接赋值,这个变量是全局变量。然后问这两种在浏览器下有什么区别?(我回答了是不是变量和函数声明提升?,面试官说不是)
5 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
这种问题早就过时了,没想到现在还有问的。简单来说,跟作用域范围有关:
如果 var 和 no var 创建的变量都在全局作用域顶层(浏览器中是 window,Nodo.js 是 global),那么它们就没啥区别。
如果出现在函数内部(或者有子作用域的代码块中),那么 var 创建的变量就是局部变量,而 no var 创建的变量实际上是一个直接赋值操作,按流程来讲会先找到变量然后再赋值。因为子作用域中找不到该变量,就会继续向上找,直到全局作用域,如果仍然不存在就会直接创建在全局作用域中。
慕容3067478
TA贡献1773条经验 获得超3个赞
这种问题一句话两句话说不清的,这里var与不var只是JS的执行原理(执行上下文)一部分内容,但是很重要,有很多所谓的面试官自己对JS底层的执行原理都搞不清楚。你把执行原理搞清楚了,什么作用域、作用域链、this、闭包都迎刃而解啦。
添加回答
举报
0/150
提交
取消