①var表示声明了一个变量,并且可以同时初始化该变量。
②使用var语句声明的变量的作用域是当前执行位置的上下文:一个函数的内部(声明在函数内)或者全局(声明在函数外)。
③给一个非声明变量赋值会隐式创建一个全局变量(造成代码污染)(全局object的一个属性)。声明变量(Declared Variable)和非声明变量(Undeclared Variable)的区别是:
(1)声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的。
(2)声明变量在任何代码执行前创建,而非声明变量只有在执行赋值操作的时候才会被创建。
(3)声明变量是它所在上下文环境的不可配置属性(non-configurable property),非声明变量是可配置的(例如非声明变量可以被删除)。
强烈建议必须使用声明变量!!!(无论是否在函数内)
④变量提升:由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明。这意味着变量可以在声明之前使用。
2、let
①let声明了一个块级域的局部变量,并且可以给它一个初始化值。
②let
允许把变量的作用域限制在块级域中。与var不同处是:var 申明变量要么是全局的,要么是函数级的,而无法是块级的。
③let声明的变量作用域包含定义它的块以及任何包含的子块中。这点与var相似。
④为什么会是let这个名字?https://stackoverflow.com/questions/37916940/js-why-let-have-this-name
⑤在程序或者函数的顶层,let 与 var 表现相似。
⑥在同一个函数或同一个作用域中用let重复定义一个变量将引起TypeError。
⑦let的作用域是块,而var的作用域是函数。
⑧let块
提供了一种在块的范围内获取变量的值,而不会影响块外面名字相同的变量的值的方法。
3、const
①const 声明创建一个只读的常量。这不意味着常量指向的值不可变,而是变量标识符的值只能赋值一次。(注意区分常量的值和常量指向的值的不同)
注:这点与Java C++中类似。即:指向常量的指针,表示这个指针不能改变所指向变量的值,仅表示“只读“。但是被指向的变量的值可以通过其他手段改变。
②可以在全局作用域或者函数内声明常量,常量需要被初始化。
③常量拥有块作用域,和使用let定义的变量十分相似。常量的值不能通过再赋值改变,也不能再次声明。
④一个常量不能和它所在相同作用域内的其他变量或函数拥有相同的名称。
⑤常量可以是一个具体的值,也可以是一个对象。注意:常量是对象时,对象内部的属性可变而不受保护。
例如:
const myObject = {"key":"value"};
myObject = {"newKey":"newValue"}; // 这句报错
myObject.key = "newValue"; // 这句则会成功
相关推荐
JavaScript ES6 中的 `var`、`let` 和 `const` 是三种不同的变量声明方式,它们在作用域、提升(hoisting)以及可变性上存在显著差异。这些新特性对于理解和编写更健壮的JavaScript代码至关重要。 1. **块级作用域...
首先,var关键字是早期JavaScript中唯一的变量声明方式。它存在一些问题,比如变量提升和全局变量污染。变量提升意味着变量可以先使用再声明,这在复杂的代码中容易造成错误。全局变量污染则是指在浏览器环境中,...
这是一种编译阶段的行为,使得变量声明(不论`var`、`let`还是`const`)都会被移动到其所在作用域的顶部,但赋值操作保持原位。因此,以下代码: ```javascript var myname = "huming"; function test() { alert...
随着ES6规范的到来,Js中定义变量的方法已经由单一的 var 方式发展到了 var、let、const 三种之多。var 众所周知,可那俩新来的货到底有啥新特性呢?到底该啥时候用呢?下面就是小编总结出的关于javascript中var与...
首先,我们要了解JavaScript中的变量有三种声明方式:使用var关键字、let关键字和const关键字。每种声明方式决定了变量的作用域和生命周期。 var关键字是早期JavaScript中声明变量的主要方式,它具有函数作用域或...
首先,JavaScript提供了三种声明变量的方式:`var`、`let` 和 `const`。在讨论这些声明方式之前,我们先区分全局变量和局部变量。全局变量在整个程序中都是可见的,而局部变量只在其所在的函数或块级作用域内有效。...
随着ES6(ECMAScript 2015)的引入,`let`和`const`成为了新的变量声明方式。`let`允许在相同作用域内重新声明和赋值,而`const`则用于声明不可变的常量。这些新关键字解决了`var`的一些问题,如变量提升和作用域...
在JavaScript中,块级作用域的概念仅适用于ES6的let和const关键字,var关键字所声明的变量即使在块中声明,也是函数作用域或全局作用域。这一点在设计常量时需要特别注意,因为不恰当的作用域可能会导致变量意外地被...
在ES6中,`let`和`const`是两种新的变量声明方式,它们与传统的`var`关键字有显著的不同。`let`用于声明变量,而`const`则用于声明常量,即不可变的值。 首先,`let`声明的变量具有块级作用域,这意味着变量的作用...
1. 声明方式的区别:局部变量通常使用var、let或const关键字在函数内部声明,而全局变量可以在任何地方声明,甚至不使用var等关键字声明,直接赋值即可(不推荐这种做法)。 2. 作用域的区别:局部变量的作用域局限...
本文首先介绍ES6中常用的三种变量声明方式,然后讨论了JavaScript按值传递的特性以及多种的赋值方式,最后介绍了复合类型拷贝的技巧。在JavaScript中,基本的变量声明可以用var方式;JavaScript允许省略var,直接对...
在JavaScript中,变量不需要提前声明,可以使用`var`、`let`或`const`关键字来定义。JavaScript支持七种数据类型:Undefined、Null、Boolean、Number、BigInt、String和Symbol,其中前六种是原始数据类型,Symbol是...
- **`var`**: 这是最传统的变量声明方式。`var`声明的变量具有函数作用域,这意味着如果在一个函数内部声明,则该变量只能在该函数内部访问;如果是在全局作用域声明,则该变量在整个程序中都可以被访问。 - **`...
为了解决这些问题,ES6引入了新的变量声明方式——`let`关键字,它具有以下特点: 1. **块级作用域**:`let`声明的变量具有块级作用域,即在一个大括号 `{}` 内部定义的变量只在该大括号内部有效。这一点与`var`...
例如,使用`let`在for循环中声明循环变量,可以保证这个变量只在循环体内可见,而在循环外部无法访问。 #### JavaScript 1.7的块级作用域 需要注意的是,Firefox 2+实现了JavaScript 1.7,其中包括了对块级作用域...
例如,如果在一个脚本文件或全局作用域中声明了一个变量,没有使用`var`、`let`或`const`关键词,则该变量会成为`window`对象的一个属性。这种变量在整个程序中都可以被访问到。 **示例代码**: ```javascript var ...