记录些有意思的编码题目
var a = 1
(function(){
console.log(this, '---')
console.log(a);
a = 3;
console.log(window.a)
var a = 10;
console.log(a)
})()
/**
考察点分析:
1、变量的状态提升,但他的值并不会提升的!
2、作用域运用,自执行函数可以环境隔离,避免变量污染,在内部声明的变量就不会归为windows的属性了;
打印结果如下:
- window
- undefined
- 1
- 10
*/
沿伸下:
Q1:上面和自执行函数式没有关系的哦
var a = 1
function s(){
console.log(this, '---')
console.log(a);
a = 3;
console.log(window.a)
var a = 10;
console.log(a)
}
s()
/**
和上面是同样的结果
*/
Q2: 方法里面是可以使用外层的变量的,都是变量覆盖引起的
var a = 1;
(function s(){
console.log(a);
console.log(window.a);
})()
/**
A2:作用域里面在没有a声明的情况下,才会向上层查找;最外层是window;
*/
Q3: js 中使用var与省略var 定义变量的区别
b = 4;
delete window.b
// ture 可以删除
var c = 3
delete window.c
// false var定义的为私有变量 不可以删除