2 cai772088996 cai772088996 于 2016.04.16 18:00 提问

JAVA问题:对JavaScript变量提升原理的理解有不清楚的一点

通过输出变量tel得出的结论是:全局变量的值不会影响局部变量,因此局部变量返回了未定义undefined,但是输出变量name又推翻了这个结论,按照前面这个结论来说,此时在函数内输出name,应该提示我找不到name才对啊,为什么全局变量name此时进入了函数内

图片说明

2个回答

showbo
showbo   Ds   Rxr 2016.04.16 20:17

为什么会找不到name。。。你的name是全局变量,而且你执行Test函数都已经赋值过了
javascript运行机制浅析

qq970973742
qq970973742 他應該問的是為什麼tel是underfined...而不是錯誤(未定義變量),或者是110(因為運行到這一步還沒有對tel進行初始化).不過我理解的是執行環境不同而首先解析var的變量,但是這時候又出現若console.debug(test())在test()前面時為什麼還能夠解析還不是underfined,這個應該是引用于對象,基本數據類型之間的差別了
一年多之前 回复
magicioney
magicioney   2016.04.18 17:27

js有一个叫什么预编译机制?具体名字忘了,反正你下边如果声明一个 变量var a = 5,那在开始的时候会创建一个变量a,但是未初始化,等到执行var a = 5的时候才会初始化。

magicioney
magicioney 这就是为什么,有些时候在js的下方定义了 function aa(){} 在代码的上边也能取到这个function的原因。值得一提的是:如果定义一个var a = 5,在开始是不会初始化的,如果定义一个function aa (){} 这个方法在开始就是初始化好了的。具体内容你感兴趣可以百度一下。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!