JavaScript几个作用域问题
2014-02-07 17:03
274 查看
1、
输出结果为:1 1 ,function中未声明直接赋值的a为作用域window的全局变量,很好理解
2、
输出结果为:undefined 1 0
3、
输出结果为:undefined 1 0
总结:
1. JavaScript中只存在两种作用域:全局作用域window和函数作用域function,外部的function domain嵌套内部的function domain,这就是闭包原理;
2. function domain中未使用var事先声明而直接赋值或调用的变量会访问上一层作用域中的同名变量,一直到window全局domain,如果找不到则会报错;
3. var声明变量的执行优先级是最高的,所以在例子3中test()中第一次console.log(a)执行之前,已经事先执行了var a声明,但并未执行a = 1赋值,所以此时输出undefined
var a = 0 ; function f(){ a = 1; console.log(a); //全局变量a
} console.log(a); //全局变量a f();
输出结果为:1 1 ,function中未声明直接赋值的a为作用域window的全局变量,很好理解
2、
var a = 0; function test(){ var a; console.log(a); //局部变量a a = 1; console.log(a); //局部变量a
} test(); conosle.log(a); //全局变量a
输出结果为:undefined 1 0
3、
var a =0; function test(){ console.log(a); var a = 1; console.log(a); } test(); console.log(a);
输出结果为:undefined 1 0
总结:
1. JavaScript中只存在两种作用域:全局作用域window和函数作用域function,外部的function domain嵌套内部的function domain,这就是闭包原理;
2. function domain中未使用var事先声明而直接赋值或调用的变量会访问上一层作用域中的同名变量,一直到window全局domain,如果找不到则会报错;
3. var声明变量的执行优先级是最高的,所以在例子3中test()中第一次console.log(a)执行之前,已经事先执行了var a声明,但并未执行a = 1赋值,所以此时输出undefined
相关文章推荐
- JavaScript的变量、作用域和内存问题
- JavaScript作用域问题详述
- javascript 中的声明作用域范围以及指针引用的问题。
- JavaScript基础——变量、作用域和内存问题
- JavaScript递归中的作用域问题
- [JavaScript]使用块级作用域声明对象时要注意的一个问题
- 深入知晓JavaScript的作用域问题
- JavaScript的作用域问题
- JavaScript 变量、作用域和内存问题
- Javascript 中采用AJAX异步请求数据出错问题(没有搞清readystate几个状态)
- 几个JavaScript的浏览器差异处理问题
- Javascript学习日志 (二) 变量、作用、内存问题
- 几个JavaScript的浏览器差异处理问题
- 开发自动完成功能中遇到的几个问题---javascript+XMLHTTP+DOM
- JavaScript之变量、作用域和内存问题
- JavaScript 变量、作用域和内存问题
- javascript中的ajax的作用域问题
- 简单谈谈javascript中的变量、作用域和内存问题
- IE与Firefox的几个javascript兼容问题及解决
- javascript的几个作用域