javascript 函数 变量-浅谈JavaScript中变量和函数声明的改进

2023-08-26 0 2,210 百度已收录

“这是我参加11月更新挑战的第5天,详情请查看:2021最后更新挑战”

关于JavaScript中变量函数声明的改进javascript 函数 变量,笔试时可能会被问到,概率比较高。 这里分享一下我对JavaScript中变量和函数声明的提升的理解

什么是变量作用域

变量生命周期:JavaScript变量的生命周期非常简单。 从声明开始,局部变量会在函数运行后被删除,全局变量会在页面关闭后被删除。

局部变量:JavaScript函数内部声明的变量是局部变量,只能在函数内部访问,并且同名的局部变量可以在不同的函数中使用。

全局变量:存在于函数外部的变量是全局变量,网页上的所有脚本和函数都可以访问它

我们用代码来理解一下:

变量范围

我们用代码来理解一下

//demo();这里也可以使用,但是为了新手能理解我们还是在下面使用
function demo(){
    var a = 123;
    console.log(a);
}
demo();//打印123

如果要全局复制a,则不能如下复制: 因为a的作用域仅限于函数demo,所以无法全局访问。 这也是执行后删除局部变量后的console.log(a)。 找不到原因

function demo(){
    var a = 123;
    console.log(a);
}
console.log(a); //a is not defined

如果定义了全局a,也可以在第二个script标签中访问

这是一个代码给你看

function demo(){
    var a = 123;
    b = 456
    console.log(a,b); 
}
demo();//123 456
console.log(b);//456
console.log(a);//a is not defined

为什么这里的b可以在方法中清晰的访问到呢? 细心的朋友可以看到我没有为b定义var。 这里,b 将被移动到窗口。 console.log(b)会返回到窗口找到ab,所以是可以的。 在同一窗口上还找到了一个演示方法

var未定义的属性可以配置全局属性

<script>
        var var1 = 1;//不可配置全局属性
        var2 = 2; //没有用var定义,可以配置全局属性
        console.log(this.var1); //1
        console.log(window.var1);//1
        delete var1;//false 无法删除
        console.log(var1);//1
        console.log(delete var2); //true
        console.log(var2); //not defined
    </script>

作用域链

这里给大家介绍一下作用域链的代码

var a = "apple";
var b = "boy";
function demo(){
    var a = "vue";
    console.log(a); //vue
    console.log(b); //boy
}
demo();
console.log(a);//apple

这里是为什么javascript 函数 变量,函数定义了一个局部变量a,所以demo上面的日志访问的是局部变量上面的a:vue,但是如果没有找到b,就会访问全局变量b:boy,而外部日志( a) 可以直接访问全局a:apple

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript 函数 变量-浅谈JavaScript中变量和函数声明的改进 https://www.wkzy.net/game/153068.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务