JavaScript学习笔记(二)
2021/9/6 1:07:29
本文主要是介绍JavaScript学习笔记(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
变量
- 1. 变量
- 1.1) 什么是变量?
- 1.2) 变量命名规则
- 2. var 关键字
- 2.1) var 声明作用域
- 2.2) var 声明提升
- 3. let 关键字
- 4. const 关键字
- 5. 声明风格及最佳实践
1. 变量
1.1) 什么是变量?
在 JavaScript 中,变量可以用于保存任何类型的数据。
每个变量只不过是一个用于保存任意值的命名占位符。
有 3 个关键字可以声明变量:var、const 和 let。
其中,var 在 ECMAScript 的所有版本中都可以使用,而 const 和 let 只能在 ECMAScript 6 及更晚的版本中使用。
1.2) 变量命名规则
- 第一个字符必须是字母、下划线( _ )或美元符号( $ ),剩下的其他字符可以是字母、下划线、美元符号或数字。
- 不能是关键字,保留字(例如 var, true, null)。
- 最好可以遵循驼峰命名法。首字母小写,后面单词的首字母大写(例如 myName)。
2. var 关键字
var message; // 定义多个变量,可以在一条语句中用逗号分隔每个变量。 var one = 1, two = 2, three = 3; // 在一个函数作用域中,可以重复声明。 function foo() { var age; var age; }
定义一个 message 变量,可以用它保存任何类型的值。(不初始化情况下,数据类型为 undefined)。
2.1) var 声明作用域
使用 var 操作符定义的变量会成为包含它的函数的局部变量。
2.2) var 声明提升
使用 var 时,下面代码不会报错。
function foo() { console.log(age); var age = 26; } foo(); // undefined
因为使用 var 声明的变量会自动提升到函数作用域顶部(不过此时 foo()中的 age 数据类型为 undefined)。
3. let 关键字
let 跟 var 的作用差不多,但有着非常重要的区别。
区别:
- let 声明的范围是块作用域,而 var 声明的范围是函数作用域。
- let 声明的变量不会在作用域中被提升。
- 使用 let 在全局作用域中声明的变量不会成为 window 对象的属性(var 声明的变量则会)。
let 不允许变量在同一个块作用域中重复声明。
(嵌套使用相同的标识符不会报错)
function foo() { let age; let age; // SyntaxError; age 已经声明过了,会报错。 } // 嵌套使用 let age = 30; console.log(age); // 30 if (true) { let age = 26; console.log(age); // 26 }
4. const 关键字
const 的行为与 let 基本相同.
唯一一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改 const 声明的变量会导致运行时错误。
- const 也不允许重复声明
- const 声明的作用域也是块
const 声明的限制只适用于它指向的变量的引用。
如果 const 变量引用的是一个对象,那么修改这个对象内部的属性并不违反 const 的限制。即
const person = {}; person.name = 'Matt'; // 这是可以的
5. 声明风格及最佳实践
- 不使用 var
有了 let 和 const,大多数开发者会发现自己不再需要 var 了。限制自己只使用 let 和 const 有助于提升代码质量,因为变量有了明确的作用域、声明位置,以及不变的值。
- const 优先,let 次之
使用 const 声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作。
因此,很多开发者认为应该优先使用 const 来声明变量,只在提前知道未来会有修改时,再使用 let。这样可以让开发者更有信心地推断某些变量的值永远不会变,同时也能迅速发现因意外赋值导致的非预期行为。
这篇关于JavaScript学习笔记(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南