首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript进阶教程(5)-一文让你搞懂作用域链和闭包

{ var num2 = 100; } console.log(num2); // >100 2 作用域链 当内部函数访问外部函数的变量时,采用的是链式查找的方式进行获取的,从里向外层层的搜索,搜索到了就直接使用...这里因为变量item使用var进行声明,由于变量提升(item可以在函数setupHelp的任何地方使用),所以item具有函数作用域。当onfocus的回调执行时,item.help的值被决定。...6.1 第一:使用更多的闭包 function showHelp(help) { document.getElementById('help').innerHTML = help; }...6.2 第二种方法:使用了匿名闭包 function showHelp(help) { document.getElementById('help').innerHTML = help;...6.4 第四种方法:使用 forEach()来遍历 function showHelp(help) { document.getElementById('help').innerHTML

30252

JavaScript 的闭包用于什么场景

这样使用闭包可以提供很多面向对象编程里的好处,比如数据隐藏和封装。 常见的错误:在循环中创建闭包 在 ECMAScrpit 2015 以前,还没有 let 关键字。...这种问题的解决方法之一就是使用更多的闭包,比如使用之前提到的函数工厂: function showHelp(help) { document.getElementById('help').innerHTML...使用匿名函数解决这个问题的另外一种写法是这样的: function showHelp(help) { document.getElementById('help').innerHTML = help...;而不是使用循环结束的值 } } setupHelp(); 如果你不想使用更多的闭包,也可以使用 ES2015 中介绍的块级作用域 let 关键字: function showHelp(help)...{ document.getElementById('help').innerHTML = help; } function setupHelp() { var helpText = [

1.2K80

JavaScript中的数据类型

// 下面的操作是完全合法的 var message = "helloWorld"; message = 100; 但是在实际开发中,并不推荐大家这样使用变量。这种操作方法是会让代码变得很不安全。...var strMessage = "helloWorld"; // String类型 var nMessage = 100; // Number类型 // 如果有必要数字类型也会进行细分 var iMessage...var iNum = 55; // 十进制 var octalNum = 070; // 八进制 var hexNum = 0xA; // 十六进制 需要注意的是,八进制字面量在严格模式下是无效的,谨慎使用...这个函数会将参数自动转为数值,然后再进行测试。对于对象,该函数会自动调用对象的 valueof() 方法进行测试,如果不能,则继续调用对象的 toString() ,进行测试。 1 <!...("rNull").innerHTML = rNull.toString(); // null转字符串,没有toString()方法,所以不能用toString转换 45 // document.getElementById

2.1K60
领券