费解的javascript作用域
费解的javascript作用域
漂泊者及其影子 发表于4年前
费解的javascript作用域
  • 发表于 4年前
  • 阅读 47
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: javascript有作用域吗?这是此篇博文需要探讨的问题?

在编程语言中,作用域控制着变量的可见性及生命周期。对程序员来说这是一个重要的帮助,因为它减少了命名冲突,并且提供了自动内存管理。

function fengshu() {
    // 函数体内存在三个局部变量 i j k
    var i = 0;
    if (i === 0) {
        var j = 10;
        for (var k = 0; k < 3; k++) {
            console.log(k); // 0 1 2
        }
        console.log(k); // 3
    }
    console.log(j); //10
}



大多数使用c语言语法的语言都拥有块级作用域,在一个代码块中(括在一对花括号中的语句集)定义的所有变量在代码块的外部是不可见的定义在代码块中的变量在代码块执行结束后被释放掉,这是件好事。

糟糕的是,尽管代码块的语法是否表现出它支持块级作用域,但实际上javascript并不支持,这个混淆之处可能成为错误之源。

javascript确实有函数作用域,那意味着定义在函数中的参数和变量在函数外部是不可见的,而且在一个函数中的任何位置定义的变量在该函数的任何地方都可见。

很多现代语言都推荐尽可能迟地声明变量。而且在javascript上的话却会成为糟糕的建议,因为它缺少块级作用域。所以最好的办法是在函数体的顶部声明函数中可能用到的所有变量。


所以,从javascript 作用域得出的结果是javascript有函数作用域,但并没有所谓的块级作用域。

标签: javascript 作用域
共有 人打赏支持
粉丝 42
博文 118
码字总数 72105
×
漂泊者及其影子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: