趣味coding1-变量提升&作用域code

108 阅读1分钟

记录些有意思的编码题目

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定义的为私有变量 不可以删除