作用域链的小例题

作用域链的小例题

 var a=50;
function foo1(){
    console.log(`foo1:${a}`);  //undefined
    var a = 100;
}
foo1();
console.log(`全局:${a}`);  //50
//当函数里面的var a = 100;改为a=100时,会输出(foo1:50,全局:100
 var food="鸡翅";
function eat(){
    console.log("吃",food);//吃鸡翅
}
(function(){
    var food = "包子";
    eat();   
}())
var food = "鸡翅";
(function () {
    var food = "包子";
    function eat() {
        console.log("吃", food);//吃包子
    }
    eat();
}())
 var a = 1;
function b() {
    console.log(a);
    a = 10;  //a与函数名重名,把栈里面的存放一个地址的a改为10(a是一个函数)
    console.log(a);
    return;
    function a() {

    }
}
b();
alert(a);  //1
 var f = true;
if (f === true) {
    var a = 10;
}
function fun() {
    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 
 console.log(foo);  //foo(){//C}
var foo = "A";
console.log(foo); //A

var foo = function () {
    console.log("B"); //B
};
console.log(foo);  //foo(//B)
foo();

function foo() {
    console.log("C");
}
console.log(foo);//foo(B)
foo(); 
 var a = 1;
function b() {
    console.log(a);//undefined
    a = 2;
    console.log(a);//2
    var a = 3;
    console.log(a);//3
}
console.log(a);//1
b();
console.log(a);//1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值