javascript函数作用域和变量声明提前(variable hoisting)
2016-07-07 00:07
567 查看
var scope = "global"; function f(){ console.log(scope);//输出"undefined",而不是"global" var scope = "local";//变量是在这里赋初始值的,但是变量本身在函数体内任何地方均是有定义的 console.log(scope);//输出"local" } 原因解释 由于局部变量本身在函数体内任何地方均是有定义的,也就是说,在函数体内局部变量覆盖了同名全局变量. 上述过程等价于:将函数内的变量声明"提前"至函数体顶部,同时变量初始化留在原来的位置.等价如下代码 var scope = "global"; function f(){ var scope;//在函数顶部声明了局部变量 console.log(scope);//变量存在,但其值为"undefined" scope = "local";//这里将其初始化并赋值 console.log(scope);//这里他拥有了我们期望的值 } 参考链接:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/var#var_hoisting
相关文章推荐
- JSP生成responseXML
- JavaScript作用域示例详解
- 简单实现js页面切换功能
- javascript---变量
- javascript---(function(){})()
- 去掉密码框记录功能提示
- Error: SyntaxError: DOM Exception 12 ...
- 玩转XML与JSON
- json格式简单解析
- 史上最全、JavaScript基础篇
- 模块化的JavaScript开发的优势在哪里
- 详解JS的作用域和闭包
- 使用js动态添加各种表单元素
- Web 数据实时收集入Hbase ,通过Hive 分析 (JS SDK)
- Ruff 硬件开发初体验
- javaScript如何准确地知道属于哪一类对象!!!
- JavaScript对象原型继承关系图
- JSP文件上传在servlet收集参数的详解
- js第二节
- JavaScript中有关于浏览器坐标理解