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 创建的变量或者函数