首页 > 代码库 > Javascript中变量提升的问题
Javascript中变量提升的问题
一、函数声明变量提升
函数声明具有变量提升的问题,所以在函数被声明之前就可以访问。
//else中的语句相当于将if中的function重写,因此无论flag为何值,返回的方法始终为重写后的方法。//将方法赋值给一个变量,方法就不会被重写,因此才能得到正确的结果。function functions(flag) { if (flag) { function getValue() { return ‘a‘; } } else { function getValue() { return ‘b‘; } } return getValue();}console.log( functions(true) );//b
等同于:
function functions(flag) {var getValue = http://www.mamicode.com/function () {"a";}var getValue = http://www.mamicode.com/function () {"b";}if(flag) { }else { }return getValue();}alert(functions(true));//b
改成函数表达式的形式如下:
此时只是提升了getValue这个变量,最终返回哪个值要根据flag来判断。
function functions(flag) { if (flag) { var getValue = http://www.mamicode.com/function () {>
二、var定义的变量,变量提升的问题
判断window对象中是否函数a1变量,var定义的变量会有变量提升,所以a1实质上是在全局环境中。
if(!("a1" in window)){ var a1 = 222;}alert(a1);//undefined
Javascript中变量提升的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。