JavaScript提前声明
来源:互联网 发布:oracle linux启动监听 编辑:程序博客网 时间:2024/04/29 09:16
今天看到一个面试题是这样的:
var a = 10;function test() {a = 5;alert(a);alert(this.a);var a;alert(this.a);alert(a);}
请问test(), new test() 的返回值分别是?
正确答案是:5, 10, 10, 5和 5, undefined, undefined, 5
我的答案:5,5,5,undefined和 5, undefined, undefined, 5
要不是这道题,我一直误以为JavaScript是顺序的解释执行, 声明部分一定要在调用之前, 然而这是一个误区,必要的时还要“张前顾后”。 事实上作用域内的声明无论在那里,被提前到开始的部分, 上面的代码实际同:
var a = 10;function test() {var a;a = 5;alert(a);alert(this.a);alert(this.a);alert(a);}
再如:
var a = 0;function test() {a = 5;alert(a);var a = 10;alert(a)}
等同于:
var a = 0;function test() {var a;a = 5;alert(a);a = 10;alert(a)}
上面的代码都会输出5,10
0 0
- javascript 声明提前
- JavaScript的声明提前
- JavaScript提前声明
- JavaScript 变量声明提前
- javascript 声明提前
- JavaScript声明提前
- javascript变声声明提前
- javascript函数声明提前的一个例子
- JavaScript函数作用于之声明提前
- JavaScript函数作用域和声明提前
- 谈谈 JavaScript 中的 声明提前(hoisting)
- 声明提前
- JavaScript 中对变量和函数声明提前的示例
- javascript的变量及其作用域和提前声明
- JavaScript 函数和变量声明的"提前"(hoist)行为
- JavaScript中对变量和函数声明的提前
- javascript的函数作用域及声明提前
- JavaScript 中对变量和函数声明的“提前”
- [IOS]UIButton的Title左对齐
- 从mysql数据库导入数据到mongodb的方法大全
- jndi 数据源配置详解
- 成功焊接BGA芯片技巧
- js仿百度文库文档上传页面的分类选择器_第二版
- JavaScript提前声明
- Android init language (安卓初始化语言)
- 从零开始开发Android版2048 (五) 撤销的实现
- 最重要的两部分是内容和外链,其中尤其以外链更为重要
- 在mac系统安装Apache Tomcat的详细步骤(转载自himi的博客,修改了错误添加了图片)
- gcc编译器常用的命令行参数一览
- Dbutils
- 串行乘法与并行乘法
- 利用反射和工厂模式实现控制反转