变量作用域

一、

var num=10;
fun();
function fun() {
    console.log(num);//输出undefined;
    var num=20;
}

说明:在JS中有一个解析器,其解析过程如下:
1、预解析(全局作用域中)
i)先找var ,function和参数;
ii)找到var ,function之后,会把var,function提前。

var num;
function fun() {
    console.log(num);
    var num=20;
}
num=10;
fun();

2、从上到下一行一行执行代码
针对上面的代码:先执行num=10;接着是fun()函数,然后就进入了fun()的局部作用域内,又开始了新一轮的解析过程
2.1)预解析
i)先找var ,function和参数;
ii)找到var ,function之后,会把var,function提前。

var num
console.log(num);
num=20;

2.2)从上到下一行一行执行代码;
故执行结果是undefined.
二、

var a=18;
f1();
function f1() {
    var b=9;
    console.log(a);
    console.log(b);
    var a='123';
}

解析如下:1、预解析
i)先找var ,function和参数;
ii)找到var ,function之后,会把var,function提前。

var a;
function f1() {
    var b=9;
    console.log(a);
    console.log(b);
    var a='123';
}
a=18;
f1();

2、从上到下一行一行执行代码
针对上面的代码:先执行a=18;接着是f1()函数,然后就进入了f1()的局部作用域内,又开始了新一轮的解析过程
2.1)预解析
i)先找var ,function和参数;
ii)找到var ,function之后,会把var,function提前。

var b;
var a;
b=9;
console.log(a);
console.log(b);
a='123';

2.2)从上到下一行一行执行代码;
故执行结果是//undefined,//9
三、

f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
    var a=b=c=9;
    console.log(a);
    console.log(b);
    console.log(c);
}

解析过程如下:1、预解析
i)先找var ,function和参数;
ii)找到var ,function之后,会把var,function提前。

function f1() {
    var a=b=c=9;
    console.log(a);
    console.log(b);
    console.log(c);
}
f1();
console.log(c);
console.log(b);
console.log(a);

2、从上到下一行一行执行代码
针对上面的代码:先执行f1()函数,然后就进入了f1()的局部作用域内,又开始了新一轮的解析过程.
2.1)预解析
i)先找var ,function和参数;
ii)找到var ,function之后,会把var,function提前。

var a;
a=b=c=9;
console.log(a);
console.log(b);
console.log(c);

2.2)从上到下一行一行执行代码;
故执行结果是//9,//9,//9,//9,//9,//a is not defined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值