javascript变量定义范围及闭包

1、javascript不同于其他语言,for循环中定义的变量是可以在for循环外面使用的,也就是说,它的for循环没有限定作用域

var test =function () {
   for (var i=0;i<10;i++){
        //..
   }
   console.log(i);
}
test();

输出结果10.

2、javascript变量可以先使用,后定义,因为变量的申明终是会被提升到最顶部。但是如果在定义之前使用,变量的值是undefined

var test = function () {
    console.log(name);
    var name = "qiaokun";
};
test();

原因:javascript引擎在进入作用域时,会对代码进行两次处理:第一次,初始化变量;第二次:执行代码

3、自执行函数解决了变量污染的问题,这样想一下,有些变量只是出现在某些特定用处,我们可以将这些变量以及他们的使用放在一个自执行函数中,外部是无法访问这些自执行函数中的变量的。

(function () {
    //undefined
    console.log(name);
    var name = "qiaokun";
    // qiaokun
    console.log(name);
})()
// error
console.log(name);

4、闭包:阻止垃圾回收机制回收变量,在执行环境之外也能访问到该变量。闭包因保存函数而创建,闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗!

5、js中的delete,可以删除对象的属性,不能删除像var 创建的变量或者函数




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值