我理解的 JavaScript 作用域
来源:互联网 发布:windows xp桌面壁纸 编辑:程序博客网 时间:2024/06/16 06:33
昨天有人给我发了一道面试题,如下:
var arr=[1,2,3]; for(var i= 0,j;j+arr[i++];){ console.log(j); } console.log("-----"); console.log(i); console.log(j); console.log("-----");
在解题前,我们先回顾下 JavaScript 中,变量域相关的知识。
全局变量(Global)
全局变量是指在任何地方都可以访问的变量,有两种情况
- 在 function 外面声明,不论是否用var关键字
- 在 function 里面声明,不使用var关键字,当然声明的语句必须被执行才可以
局部变量(Local)
局部变量只能在被声明的 function 内部才能访问
- 在 function 里面声明,使用var关键字
两点要注意的地方
先看代码:
alert(i); // 输出 undefined for (var i = 0; i < 1; i++){}; alert(i); // 输出1
- JavaScript 不存在语句作用域,在语句内定义的变量会扩散到语句外边, 例子中 i 在 for 语句中声明,但是在 for 语句的外面任然可以访问
- 在 for 语句之前就可以访问到 i ,只不过这时候还没有被赋值
i++ 是在 i 使用后再自加:
第一次执行时,j=arr[0],之后 i=1,console.log(j) 输出 1
第二次执行时,j=arr[1],之后 i=2,ocnsole.log(j) 输出 2
第三次执行时,j=arr[2],之后 i=3,ocnsole.log(j) 输出 3
第四次(不符合 for 条件),j=arr[3] 为 undefined,之后 i=4,ocnsole.log(j) 没有输出,退出 for 循环
for 语句执行结束后,console.log(i) 由上分析可知输出 4,console.log(j) 输出 undefined
最后输出结果为:
1 2 3 --------- 4 --------- undefined ---------
0 0
- 我理解的 JavaScript 作用域
- 理解Javascript作用域
- 理解 javascript 作用域
- 理解JavaScript作用域
- JavaScript 作用域 理解
- 理解JavaScript作用域
- JavaScript的作用域链的理解
- 深入理解JavaScript的变量作用域
- 深入理解JavaScript的变量作用域
- 深入理解JavaScript的变量作用域
- 深入理解JavaScript的变量作用域
- 深入理解JavaScript的变量作用域
- 深入理解JavaScript的变量作用域
- 深入理解JavaScript的变量作用域
- javascript函数作用域的理解
- 深入理解JavaScript的变量作用域
- javaScript的作用域链深入理解
- 深入理解JavaScript的变量作用域
- linux下光速安装mysql数据库
- hpu 1705: 天下大乱
- runtime 使用
- Activity和context转换
- Python发送邮件小析
- 我理解的 JavaScript 作用域
- 在共享DLL中使用MFC与在静态库中使用MFC的区别
- QML中ROW组件的使用方法及示例
- C-C++字符输出时遇到字符'\n','\0'区别
- 当前日志损坏(ACTIVE,CURRENT),数据库正常关闭
- 内存优化
- Linux系统下的软件安装方式
- Shell基础(五):条件判断与流程控制
- QML中Column的使用及示例