var a=50;functionfoo1(){
console.log(`foo1:${a}`);//undefinedvar a =100;}foo1();
console.log(`全局:${a}`);//50//当函数里面的var a = 100;改为a=100时,会输出(foo1:50,全局:100
var food="鸡翅";functioneat(){
console.log("吃",food);//吃鸡翅}(function(){var food ="包子";eat();}())
var food ="鸡翅";(function(){var food ="包子";functioneat(){
console.log("吃", food);//吃包子}eat();}())
var a =1;functionb(){
console.log(a);
a =10;//a与函数名重名,把栈里面的存放一个地址的a改为10(a是一个函数)
console.log(a);return;functiona(){}}b();alert(a);//1
var f =true;if(f ===true){var a =10;}functionfun(){var b =20;//var在函数里面无法提升变量到函数外
c =30;//非严格模式下,如果作用域中没有所查询变量,全局作用域就会自动创建一个具有该名称的变量}fun();
console.log(a);
console.log(b);
console.log(c);
if("a"in window){var a =10;}alert(a);*///10
var a =(b =3);//b为隐士声明了一个全部变量(b=3是一个表达式)(function(){var a =(b =5);})();
console.log(a);//3
console.log(b);//5