javascript作用域相关内容

1.创建函数或者变量的同时,它的作用域就已经被规定了,并不取决于在何时或者何地调用。

例子1:

var a=10;
function fn1(){
    console.log(a);
}
function fn2(){
    var a=20;
    fn1();
}
fn2();

这时候输出的是10,而不是20。函数fn1中的a是全局下的a。与它在fn2中调用无关,不管它在哪里被调用,都是a=10;

2.js没有块级作用域

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

3.外部作用域无法访问内部作用域,内部作用域可以访问外部作用域。

4.变量声明如果不带var,那么它就是全局变量。

例1:

var a=3;
function fn(){
    c=2;//全局变量
    var d=5;
    function inner(){
    var e=d;//5
    for(var i=0;i<3;i++){
    console.log(e);//5
}
    console.log(i);//3
}
    inner();
}
fn();
console.log(c);//2

 

例2:

// 案例2   变量提升   本作用域优先使用变量//如果没有,去他的父级作用域查找,直到最外层的全局作用域

var a = 'abc';

function test() {

   console.log(a);   //undefined;
   var a = 'def';       // 'def';
   console.log(a);   // ‘def;

}

test();

console.log(a);

5.函数作用域是一种局部作用域,变量只能在本作用域访问。

6.js没有块级作用域,在for,while,if中声明的变量,外面也能用。

7.js函数中的变量在被执行之前,会全部先声明。如果声明之后未赋值就打印,是undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值