js预解析

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>js的预解析</title>
</head>
<body>
 

<script>
//js的解析是先把,变量声明和函数声明提升到当前作用域的最上面。
/* //该代码在解析的时候,先把 var i 变量声明放到当前作用域(全局)的最上方
alert(i); // alert(i) 此时 i未 赋值
var i = 10; */ //此时才把 i赋值为 10

// alert(ss());
alert(ss()); //预解析的时候,已经把函数声明放到最前面了
function ss () { // 先把ss 放到当前作用域(全局)的前面 function ss () {...}
alert(i); // 把 var i 放到当前作用域(局部)最上方,把 function mm () {..}也放到最上面
var i = 1;
alert(mm); // 此时函数未调用,只是声明。函数声明就是 函数名+函数体。
function mm () {
alert(j); //这个alert不会显示,而是被显示在alert(mm)中。
var j = 1;
console.log("22");
 
}
return 22;
}
//仔细分析,三个alert的显示次序,alert(i); alert(mm); alert(ss());
 
 
</script>
</body>
</html>
posted @ 2019-05-26 23:09  没有翅膀的脚  阅读(89)  评论(0)    收藏  举报