鍍金池/ 問答/HTML5  HTML/ JS中直接var一個(gè)變量和不var,直接賦值,有什么區(qū)別?

JS中直接var一個(gè)變量和不var,直接賦值,有什么區(qū)別?

今天面試遇到的一個(gè)問題?先問的是不var,直接賦值,這個(gè)變量是全局變量。
然后問這兩種在瀏覽器下有什么區(qū)別?(我回答了是不是變量和函數(shù)聲明提升?,面試官說不是)

回答
編輯回答
伴謊

如果之前未定義過,直接使用和var定義,基本上沒有區(qū)別。
如果之前定義過,原內(nèi)存釋放與新內(nèi)存開辟,指針指向新開辟的內(nèi)存

2018年7月16日 04:00
編輯回答
眼雜

總結(jié)一點(diǎn)就是 沒有var的總是全局變量 有var的就是當(dāng)前作用域的變量

2017年2月8日 10:41
編輯回答
命多硬

給個(gè)鏈接 http://www.jb51.net/article/7...

這個(gè)問題實(shí)屬坑爹,為題而有的問題?,F(xiàn)在都用"use strict"模式 不寫var會(huì)報(bào)錯(cuò)

2017年5月21日 05:10
編輯回答
老梗

這種問題一句話兩句話說不清的,這里var與不var只是JS的執(zhí)行原理(執(zhí)行上下文)一部分內(nèi)容,但是很重要,有很多所謂的面試官自己對(duì)JS底層的執(zhí)行原理都搞不清楚。你把執(zhí)行原理搞清楚了,什么作用域、作用域鏈、this、閉包都迎刃而解啦。

2017年6月14日 20:08
編輯回答
汐顏

這種問題早就過時(shí)了,沒想到現(xiàn)在還有問的。簡(jiǎn)單來說,跟作用域范圍有關(guān):

  1. 如果 var 和 no var 創(chuàng)建的變量都在全局作用域頂層(瀏覽器中是 window,Nodo.js 是 global),那么它們就沒啥區(qū)別。
  2. 如果出現(xiàn)在函數(shù)內(nèi)部(或者有子作用域的代碼塊中),那么 var 創(chuàng)建的變量就是局部變量,而 no var 創(chuàng)建的變量實(shí)際上是一個(gè)直接賦值操作,按流程來講會(huì)先找到變量然后再賦值。因?yàn)樽幼饔糜蛑姓也坏皆撟兞浚蜁?huì)繼續(xù)向上找,直到全局作用域,如果仍然不存在就會(huì)直接創(chuàng)建在全局作用域中。
2017年4月5日 07:23