JavaScript 作用域练习题
2018-03-26 19:17
281 查看
var a = 'global'; function test(){ var a ='local'; return a; } console.log(test(true)); // local
JavaScript中没有块级作用域,只有全局和函数作用域
var a = 'global'; function test(){ (function(){ var a = 'local'; })(); return a; } console.log(test()); // global
local 作用域在匿名函数中,故返回全局变量global
var a = 'global'; function test(){ { var a = 'local'; } return a; } console.log(test()); // global
函数中的a作用域在是test函数,故输出global
var a = 'global'; function test(){ console.log(a); var a = 'local'; return a; } console.log(test()); // local // 等同于 function test(){ var a // undefaned 此时a未赋值 console.log(a); a = 'local'; return a; }
JavaScript中会自动把变量声明的语句提升到当前作用域的最前方
var a = 1; function test(){ a = 10; return; var a = 100; // 注意变量提升 } test();
先执行了函数test,然而函数test中对a值的改变不会影响到全局变量
<!-- 给元素添加循环绑定事件 --> <ul> <li>1</li> <li>2</li> <li>3</li> </ul>
// 方案1 var lis = document.getElementsByTagName("li"); for(let i in lis){ lis[i].count = i; lis[i].onclick = function(){ console.log(parseInt(this.count)+1); } } // 方案2 闭包实现 var lis = document.getElementsByTagName("li"); for(let i in lis){ (function(j){ lis[j].onclick = function(){ console.log(parseInt(j)+1) } }(i)); }
相关文章推荐
- 理解 JavaScript 作用域和作用域链
- JavaScript 作用域和作用域链 解析
- 理解JAVASCRIPT 中hasOwnProperty()的作用
- Javascript中的作用域(scope)
- JavaScript的执行环境和作用域
- 轻松学习JavaScript四:JS点击灯泡来点亮或熄灭这盏灯的网页特效映射出JS在HTML中作用
- javascript 作用域
- 理解JAVASCRIPT 中hasOwnProperty()和isPrototypeOf的作用
- 简述JavaScript作用域与作用域链
- 深入理解JavaScript中的prototype和call()的作用
- JavaScript基础——变量、作用域和内存问题
- javascript面向对象(七)原型另外的作用--扩充对象的属性和方法
- 关于JavaScript作用域你想知道的一切
- JavaScript作用域提升问题分析
- 深入理解javascript原型和闭包系列 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】
- JavaScript从作用域到闭包
- 转 让eval()全局作用域执行的方法深入研究(javascript)
- javascript 函数及作用域总结介绍
- Javascript中 new Date().valueOf()的作用,以及时间戳的由来
- 《你不知道的JavaScript(上卷)》笔记:作用域闭包