有大佬解答吗为啥输出是
javascript吧
全部回复
仅看楼主
level 2
陌生人的问候😘
楼主
var my = "小明";
function showName(){
console.log(my);
if(0){ var my = "小红" }
console.log(my);
}
showName();
if不是不成立吗 全局变量为啥不输出
2020年04月13日 05点04分
1
level 1
記憶殿下
if條件都不成立,就不會執行里面的代碼了,函數showName中就沒有定義任何變量,返回的就是undefined了,如果if條件成立if(true){var my = ‘小紅’} console.log(my) //“小紅”了。
2020年04月15日 01点04分
4
陌生人的问候😘
var my = "小明";这个不是全局变量吗 怎么不能使用呢
2020年04月15日 07点04分
level 12
丶影-奈斯
因为函数里面的my是局部变量
2020年04月15日 08点04分
5
陌生人的问候😘
if判断不是没成立吗 不成立也是开闭内存空间? 作用域链怎么不起作用了
2020年04月15日 12点04分
丶影-奈斯
@陌生人的问候😘
var 没块级作用域 所谓作用域是变量声明的所在位置已经决定的了 代码执行前 var会预解析进行提升在作用域的顶层 你那if不成立只是my没被赋值而已
2020年04月15日 12点04分
陌生人的问候😘
@丶影-奈斯
原来是这样 被你那么一说,明白了 函数里面的log是打印输出的是 var my 全局预解析下的变量提升是吧 懂了懂了 谢谢大佬
感谢
2020年04月15日 12点04分
丶影-奈斯
@陌生人的问候😘
这点百度就有了 更详细
2020年04月15日 12点04分
1