JS中直接var一个变量和不var,直接赋值,有什么区别?

今天面试遇到的一个问题?先问的是不var,直接赋值,这个变量是全局变量。
然后问这两种在浏览器下有什么区别?(我回答了是不是变量和函数声明提升?,面试官说不是)

慕雪6442864
浏览 4097回答 5
5回答

哈士奇WWW

这种问题早就过时了,没想到现在还有问的。简单来说,跟作用域范围有关:如果 var 和 no var 创建的变量都在全局作用域顶层(浏览器中是 window,Nodo.js 是 global),那么它们就没啥区别。如果出现在函数内部(或者有子作用域的代码块中),那么 var 创建的变量就是局部变量,而 no var 创建的变量实际上是一个直接赋值操作,按流程来讲会先找到变量然后再赋值。因为子作用域中找不到该变量,就会继续向上找,直到全局作用域,如果仍然不存在就会直接创建在全局作用域中。

郎朗坤

如果之前未定义过,直接使用和var定义,基本上没有区别。如果之前定义过,原内存释放与新内存开辟,指针指向新开辟的内存

慕容3067478

这种问题一句话两句话说不清的,这里var与不var只是JS的执行原理(执行上下文)一部分内容,但是很重要,有很多所谓的面试官自己对JS底层的执行原理都搞不清楚。你把执行原理搞清楚了,什么作用域、作用域链、this、闭包都迎刃而解啦。

萧十郎

总结一点就是 没有var的总是全局变量 有var的就是当前作用域的变量
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript