js中与变量相关的一些知识

简介: 来补充一点上一篇文章 js变量初探 中漏掉的知识点
来补充一点上一篇文章 js变量初探 中漏掉的知识点:

1.变量的定义与声明中常见问题:
(1)用var关键字声明的变量,未经初始化时,保存的是一个特殊的值—undefined,变量初始化仅仅是给变量赋一个值
(2)当使用var关键字声明了一个变量时,创建的这个变量是不可配置的,也就是说这个变量无法通过delete运算符删除;在严格模式下,使用delete运算符删除var关键字声明的变量会导致SyntaxError。
(3)省略var关键字会导致定义一个全局变量,但是不推荐这种做法。在严格模式下,给未声明的变量赋值会导致ReferenceError。
(4)变量的声明、定义与初始化
a)声明:给变量一个名字,宣告它从此刻开始存在;
b)定义:给变量分配一个存储空间;
c)初始化:给变量的存储空间赋值。
由于JS是一种动态语言,其变量的类型是不固定的,可以随着保存值的变化而变化,所以其定义变得无关紧要
(5)变量声明提升
JS在执行的时候,会把所有变量的声明都提升到当前作用域的最前面;声明提升,这步操作是在JS引擎“预编译”阶段实现的,是在代码开始运行之前;

2.基本类型与引用类型
(1)对于基本类型值,在复制变量的时候,会在新的变量上创建一个新值,这个新值是原值的一个副本,它们相互独立;基本类型值之间的比较,只是单纯的值的比较
(2)引用类型值是保存在变量中的对象,保存引用类型值的变量,实际上保存的是一个指向该对象的指针;当复制保存着对象的某个变量时,复制的其实是指针;复制操作结束后,两个变量指向同一个对象
(3)对于引用类型值,可以为其添加属性和方法,也可以修改或者删除其属性和方法;在为对象添加属性和方法时,操作的是实际的对象,因此,改变任何一个变量,都会影响另外一个变量。
(4)引用类型值的比较并非值的比较:即使两个对象包含相同的属性和值,它们也是不相等的;各个索引元素完全相等的两个数组也不相等;引用类型值的比较是引用的比较,当且仅当它们引用同一个对象时,它们才相等

3.全局变量:当JS解析器启动时,或者任何Web浏览器加载新页面的时候,它将创建一个新的全局对象,并给他一组定义的初始属性:
(1)全局属性:比如undefined、Infinite、NaN
(2)全局函数:比如isNaN()、parseInt()、eval()
(3)构造函数,比如Date()、String()、Array()、Object()
(4)全局对象:比如Math、Json
初次创建的时候,全局对象定义了JS中所有的预定义全局值;如果代码声明了一个全局变量,这个全局变量就是全局对象的一个属性。

4.名字解析顺序
JS中一个名字可能以4种方式进入作用域,其优先级如下:
(1)语言内置:所有作用域中都有arguments对象和this对象;
(2)函数声明
(3)形式参数
(4)变量声明:不会影响同名的函数声明或者形式参数声明
目录
相关文章
|
JavaScript 前端开发
JavaScript基础知识-变量的声明提前
关于JavaScript变量声明提前特性的基础知识介绍。
208 1
JavaScript基础知识-变量的声明提前
|
JavaScript 前端开发
JavaScript如何判断变量undefined
JavaScript如何判断变量undefined
1039 10
|
JavaScript 前端开发 开发者
JavaScript基础——JavaScript变量名称命名规范
JavaScript变量命名规范是编写高质量代码的重要部分。通过遵循基本规则、使用常见命名约定并应用最佳实践,可以提高代码的可读性和可维护性。希望本文能帮助开发者在日常编程中更好地理解和应用JavaScript变量命名规范,从而编写出更清晰、更可靠的代码。
1107 11
|
JavaScript 前端开发 容器
盘点JavaScript中所有声明变量的方式及特性
本文详细介绍了JavaScript中变量定义的多种方式,包括传统的`var`、`let`和`const`,以及通过`this`、`window`、`top`等对象定义变量的方法。每种方式都有其独特的语法和特性,并附有代码示例说明。推荐使用`let`和`const`以避免作用域和提升问题,谨慎使用`window`和`top`定义全局变量,不建议使用隐式全局变量。掌握这些定义方式有助于编写更健壮的JS代码。
560 11
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
815 12
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
370 11
|
前端开发 JavaScript UED
如何使用 JavaScript 动态修改 CSS 变量的值?
【10月更文挑战第28天】使用JavaScript动态修改CSS变量的值可以为页面带来更丰富的交互效果和动态样式变化,根据不同的应用场景和需求,可以选择合适的方法来实现CSS变量的动态修改,从而提高页面的灵活性和用户体验。
|
JavaScript 前端开发
js 变量作用域与解构赋值| 22
js 变量作用域与解构赋值| 22
|
设计模式 JavaScript 前端开发
JS 代码变量和函数的正确写法
JS 代码变量和函数的正确写法
290 3