1、问题背景

      在JavaScript中,定义了一个变量x,立即执行函数内部也定义了x,并且在后面对x重新赋值;分别在这几处打印变量x的值

2、实现源码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var x = 100;
(function(){
console.log(x);
var x = 200;
console.log(window.x);
x = 300;
console.log(x);
})()
</script>
</head>
<body>
</body>
</html>


3、结果分析

      由于立即执行函数优先级比外部声明变量优先级高,打印x变量为undefined;在函数内部,重新声明变量x,但是调用的是window.x,获取全局变量x,打印的值为100;对变量重新赋值300,获取的是函数内部的变量值,打印的值为300

undefined
b.html:11 100
b.html:13 300