JavaScript块级作用域绑定的实现流程

 更新时间:2022年12月30日 09:51:14   作者:volit_  
这篇文章主要给大家介绍了关于JavaScript块级作用域绑定的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.var声明和变量提升

无论是在函数作用域亦或是全局作用中使用var声明的变量,都会在预编译阶段被提升到当前作用域的顶部。

function func(condition) {
	if(condition){
    var value = "value";
    return value;
  } else {
    //此处可访问到value,但值为undefined
    return null;
  }
  //此处可访问到value,但值为undefined
}

通常在拥有块级作用域的语言中,上述代码块只会在当参数condition的值为true时,value变量才会被创建,且只能在if代码块中被访问到。但在js中,无论condition的值是什么,value变量都会被创建,它再预编译阶段中的实际表现如下:

function func(condition) {
  var value;
	if(condition){
    var value = "value";
    return value;
  } else {
    return null;
  }
}

2.块级声明和临时死区

块级声明会将当前声明变量的作用域限制在函数作用域或块级作用域内部,其他非作用区域访问会得到undefined。

function func(condition) {
	if(condition){
    let value = "value";
    return value;
  } else {
    //此处访问value会报错
    return null;
  }
  //此处访问value会报错
}

使用let或const的声明的变量会在预编译阶段被加入到临时性死区(TDZ)中,访问临时性死区中的变量会触发引用错误。

3.禁止重复声明

使用var声明同名变量时,不会产生任何问题,因为它只是相当于一个赋值操作。

function(condition) {
	var value = "value";
  var value = "val";
  //相当于
  var value = "value";
  value = "val";
}

但使用let和const声明变量时,会禁止声明同名变量,抛出变量已定义异常。

4.块级作用域绑定的最佳实践

变量定义默认使用const,只有确实需要改变变量的值时使用let。

到此这篇关于JavaScript块级作用域绑定的实现流程的文章就介绍到这了,更多相关JS块级作用域绑定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript 函数表达式与函数声明的用法及区别

    JavaScript 函数表达式与函数声明的用法及区别

    这篇文章主要介绍了JavaScript 函数表达式与函数声明详析,函数表达式和函数声明是JavaScript中创建函数的两种方法,下面文章具体的相关内容介绍,需要的小伙伴可以参考一下
    2022-06-06
  • JavaScript数组方法实例详解

    JavaScript数组方法实例详解

    本文将通过实例为大家详细介绍JavaScript中的数组的所有方法。文中的示例代码讲解详细,对我们深入了解JavaScript数组有一定的帮助,需要的可以参考一下
    2021-12-12
  • JS获取多维数组中相同键的值实现方法示例

    JS获取多维数组中相同键的值实现方法示例

    这篇文章主要介绍了JS获取多维数组中相同键的值实现方法,结合实例形式分析了JS数组遍历、判断、键值获取等操作技巧,需要的朋友可以参考下
    2017-01-01
  • JavaScript实现密码框输入验证

    JavaScript实现密码框输入验证

    这篇文章主要为大家详细介绍了JavaScript实现密码框输入验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 老生常谈JavaScript中的this关键字

    老生常谈JavaScript中的this关键字

    相对于很多其他的面向对象语言来说,this代表的就是当前对象。本篇文章通过实例给大家介绍js中的this关键字,感兴趣的朋友一起看看吧
    2016-10-10
  • JS实现自动阅读单词(有道单词本添加功能)

    JS实现自动阅读单词(有道单词本添加功能)

    有道单词客户Duan没有自动阅读的功能, 本文用强大的js实现了简单的自动下一个单词的功能,需要的朋友可以参考下
    2016-11-11
  • JS实现十分钟倒计时代码实例

    JS实现十分钟倒计时代码实例

    在本篇文章里我们给大家分享了关于JS实现十分钟倒计时的相关实例代码,有需要的朋友们可以学习下。
    2018-10-10
  • avalonjs制作响应式瀑布流特效

    avalonjs制作响应式瀑布流特效

    瀑布流主要应用在图片展示页面上。如果有一大批图片需要展示,原始图片尺寸不一致,又希望每张图片都能不剪裁,完整显示,那么就要给图片规定一个宽度,解放它们的高度。利用网页高度不限这个特性,充分利用页面的空间,尽可能的展示多的图片。下面我们就来详细探讨下
    2015-05-05
  • JS实现DOM删除节点操作示例

    JS实现DOM删除节点操作示例

    这篇文章主要介绍了JS实现DOM删除节点操作,结合实例形式分析了javascript使用removeChild()操作页面dom节点删除功能的相关实现技巧,需要的朋友可以参考下
    2018-04-04
  • javascript中的作用域和闭包详解

    javascript中的作用域和闭包详解

    这篇文章主要向大家介绍了javascript中的作用域和闭包,以及利用js闭包实现循环绑定事件,感兴趣的小伙伴们可以参考一下
    2016-01-01

最新评论