您的位置:首页 > Web前端 > JavaScript

Js变量作用域闭包

2018-03-30 18:03 288 查看
[b]1.  问题代码:[/b]
<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外
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: