您的位置:首页 > Web前端 > JavaScript

JavaScript 预解析

2020-02-03 04:50 1061 查看

上一篇我们说到了作用域跟作用域,这篇说说js的预解析

预解析:在当前作用域下,js运行之前,会把带有var和function关键字声明的变量先声明,并在内存中安排好。然后从上至下解析js语句。而且function的声明优先于var声明。

不多说,,直接上代码

正规写法:

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

预解析里:先将变量和函数提前,如下:

var num;
function fun(){
var num;
console.log(num);//undefined
num=20;

}
num=10;
fun();

 

第二种

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

//相当于以下代码
var num;
function dn(){
var num;
console.log(num);
num =20;
console.log(num );
}
num=10;
dn();

第三种

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

//相当于以下代码

var a;
function ss(){
var b;
var a;
b=9;

console.log(a);
console.log(b);
a='123';
}
a=18;
ss();

第四种

aa();
console.log(c1);//9
console.log(b1);//9
console.log(a1);//报错

function aa(){
var a1=b1=c1=9;
console.log(a1);//9
console.log(b1);//9
console.log(c1);//9
}

//相当于
function aa(){
var a1=b1=c1=9;//相当于 var a=9;b=9,c=9
var a1;
a1=b1=c1=9;

console.log(a1);
console.log(b1);
console.log(c1)
}
aa();
console.log(c1);
console.log(b1);
console.log(a1);

 

转载于:https://www.cnblogs.com/smile-xin/p/11389974.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
baiyong1930 发布了0 篇原创文章 · 获赞 1 · 访问量 163 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: