Js变量作用域闭包
2018-03-30 18:03
288 查看
[b]1. 问题代码:[/b]
2. 问题2: <script type="text/javascript">
var person={
username:"xiaoming",
say:function(){
alert("bbb");
}
}
person.username="小黑";
person.say();
</script> 所有的变量都定义在对象内,问题,person可以修改属性,暴露了自己的属性,不符合面向对象规范
3. 闭包解决// Window是实际参数,window的形参,
// 这里就是一个函数script以后自动调用该函数,变量的作用域在函数内,执行完毕以后失效
// 这里 JQuery是jquery定义的全集变量
(function (window,$) {
var msg="我是小明";
function f00() {
console.info(msg);
}
// 给Window定义变量
window.index= {f00}
$("body").css("background","red");
})(window,jQuery);
<script type="text/javascript"> //这里是script, 变量和函数定义的都是全局的, 就是window的 var username="xiaoming"; function show() { console.log(username); } console.log(window.username); window.show(); </script>问题: 定义一个变量都是定义全局作用域,污染全局作用域
2. 问题2: <script type="text/javascript">
var person={
username:"xiaoming",
say:function(){
alert("bbb");
}
}
person.username="小黑";
person.say();
</script> 所有的变量都定义在对象内,问题,person可以修改属性,暴露了自己的属性,不符合面向对象规范
3. 闭包解决// Window是实际参数,window的形参,
// 这里就是一个函数script以后自动调用该函数,变量的作用域在函数内,执行完毕以后失效
// 这里 JQuery是jquery定义的全集变量
(function (window,$) {
var msg="我是小明";
function f00() {
console.info(msg);
}
// 给Window定义变量
window.index= {f00}
$("body").css("background","red");
})(window,jQuery);
<script type="text/javascript" src="./src/jquery-1.9.0.js"></script> <script type="text/javascript" src="./src/index.js"></script> <script> // module4这个变量属于Window index.f00(); </script>作用域在闭包中,使用$定义函数,属性暴露在js外
相关文章推荐
- js变量作用域,闭包。
- js闭包实现块级作用域和私有变量的访问
- 关于JS变量的作用域,作用域链与闭包
- 变量的作用域--js闭包
- js加强:js引擎,变量作用域,arguments对象,特殊函数,闭包
- js 闭包以及就是变量作用域
- JS变量作用域、闭包
- 变量的作用域js
- JavaScript闭包理解【关键字:普通函数、变量访问作用域、闭包、解决获取元素标签索引】
- JavaScript闭包-块级作用域和私有变量
- Js整理备忘(01)—— 变量作用域
- Js作用域链及变量作用域
- JS变量及其作用域
- Python学习(21):Python函数(5):变量作用域与闭包
- js变量作用域和内存问题
- js中变量的函数作用域和声明提前
- 有关js的变量作用域和this指针的讨论
- 深入理解JS中的变量作用域
- js特殊例子--方法内重新定义了变量在后面就会前面的为undifined,后面没有定义就用全局的--各种专业文献上的“闭包”(closure)定义非常抽象,很难看懂。我的理解是,闭包就是能够读取其他函
- js 作用域链&内存回收&变量&闭包