首页 > 编程语言 >javascript现代编程系列教程之一:区块作用域对VAR不起作用的问题

javascript现代编程系列教程之一:区块作用域对VAR不起作用的问题

时间:2023-06-13 23:12:22浏览次数:48  
标签:const 变量 作用域 javascript var let VAR 区块

在JavaScript中,使用var声明的变量具有函数作用域,而不是块级作用域。这意味着在一个函数内部,使用var声明的变量在整个函数范围内都是可见的,包括嵌套的块(如if语句、for循环等)。为了避免区块对var不起作用的问题,你可以采用以下方法:

  1. 使用letconst代替var:从ECMAScript 2015(ES6)开始,引入了新的声明方式——letconst。它们声明的变量具有块级作用域,因此仅在所属的块内部可见。通过使用letconst,你可以确保变量只在其所属的块中起作用。
    例如:
if (true) {
    var a = 1; // 使用 'var' 声明的变量 'a' 在整个函数内部可见
    let b = 2; // 使用 'let' 声明的变量 'b' 仅在这个区块内可见
    const c = 3; // 使用 'const' 声明的常量 'c' 仅在这个区块内可见
}
console.log(a); // 输出 1
console.log(b); // 抛出 ReferenceError,因为 'b' 在这个区块之外不可见
console.log(c); // 抛出 ReferenceError,因为 'c' 在这个区块之外不可见
  1. 使用立即执行函数表达式(IIFE):在ES6之前,可以使用立即执行函数表达式来限制变量的作用域。它会创建一个新的函数作用域,使得var声明的变量只在这个新的函数作用域内可见。
    例如:
(function() {
    if (true) {
        var a = 1; // 使用 'var' 声明的变量 'a' 仅在 IIFE 内部可见
    }
})();
console.log(a); // 抛出 ReferenceError,因为 'a' 在 IIFE 之外不可见

总之,如果你使用的是较新版本的JavaScript(ES6及更高版本),推荐使用letconst来避免区块对var不起作用的问题。如果你使用的是老版本的JavaScript,可以考虑使用立即执行函数表达式(IIFE)。

标签:const,变量,作用域,javascript,var,let,VAR,区块
From: https://www.cnblogs.com/DinAction/p/17478950.html

相关文章

  • R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计|附代码数据
    全文链接:http://tecdat.cn/?p=15929最近我们被客户要求撰写关于风险价值的研究报告,包括一些图形和统计输出。风险价值VaR和损失期望值ES是常见的风险度量首先明确:时间范围-我们展望多少天?概率水平-我们怎么看尾部分布?在给定时间范围内的盈亏预测分布,示例如图1所示。 ......
  • JavaScript 全局对象参考手册 encodeURIComponent() 函数
    JavaScriptencodeURIComponent()函数JavaScript全局对象参考手册定义和用法encodeURIComponent()函数可把字符串作为URI组件进行编码。语法encodeURIComponent(URIstring)  参数描述URIstring必需。一个字符串,含有URI组件或其他要编码的文本。返回值URIstring的副......
  • JavaScript 全局对象参考手册 eval() 函数
    JavaScripteval()函数JavaScript全局对象参考手册定义和用法eval()函数可计算某个字符串,并执行其中的的JavaScript代码。语法eval(string)  参数描述string必需。要计算的字符串,其中含有要计算的JavaScript表达式或要执行的语句。返回值通过计算string得到的值(如果......
  • javascript:eval()的用法
    eval()是JavaScript中的一个全局函数,它可以计算或执行参数。如果参数是表达式,则eval()计算表达式;如果参数是一个或多个JavaScript语句,则eval()执行这些语句。以下是一些常见的用法:-计算表达式的值:`varresult=eval("3+5");`-执行JavaScript代码字符串:`varcode......
  • JavaScript Array 对象参考手册 splice() 方法
    JavaScriptsplice()方法返回JavaScriptArray对象参考手册(目录)定义和用法splice()方法用于插入、删除或替换数组的元素。语法arrayObject.splice(index,howmany,element1,.....,elementX) 参数描述index必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组......
  • JavaScript Array 对象参考手册 reverse() 方法
    JavaScriptreverse()方法返回JavaScriptArray对象参考手册(目录)定义和用法reverse()方法用于颠倒数组中元素的顺序。语法arrayObject.reverse() 提示和注释注释:该方法会改变原来的数组,而不会创建新的数组。实例在本例中,我们将创建一个数组,然后颠倒其元素的顺序:<scr......
  • javascript反编译工具javascript-obfuscator的环境搭建
    javascript-obfuscator的项目和文档地址:https://github.com/javascript-obfuscator/javascript-obfuscatorwindows端安装nodejs环境打开nodejs安装包,一直点NEXT,默认设置安装即可。安装后:#测试nodejs和npm是否已安装npm-v#如果有输出版本号,例如输出9.5.0,表示安装成功#查看......
  • Javascript中的内存(垃圾)回收机制
    JavaScript具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行常见的垃圾回收方式:标记清除、引用计数方式。一、标记清除方法1、工作原理:【标记“离开环境”的就回收内存】当变量进入环境时,将这个变量标记为“进入环境”。当变量离开环境时,则将其标记为“......
  • this 之谜揭底:从浅入深理解 JavaScript 中的 this 关键字(二)
    前言系列首发于公众号『前端进阶圈』,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。this之谜揭底:从浅入深理解JavaScript中的this关键字(二)调用位置在理解this的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而不是声明的......
  • 量子机器学习Variational Quantum Classifier (VQC)简介
    变分量子分类器(VariationalQuantumClassifier,简称VQC)是一种利用量子计算技术进行分类任务的机器学习算法。它属于量子机器学习算法家族,旨在利用量子计算机的计算能力,潜在地提升经典机器学习方法的性能。VQC的基本思想是使用一个量子电路,也称为变分量子电路,将输入数据编码并映射......