JavaScript的基本规范

简介: JavaScript的基本规范

JavaScript的基本规范

1.不要在同一行声明多个变量

在JavaScript中,使用关键字 var、let 或 const 来声明变量。这些关键字表示在当前作用域中创建一个新的变量,并可以选择性地给它们赋初始值。

然而,虽然你可以在同一行使用逗号分隔多个变量名,但每个变量都需要使用相应的关键字进行声明。这是因为 JavaScript 的语法规范要求每个变量声明都必须以关键字开始。

涉及知识点var let const

var 是声明变量的关键字。var 声明的变量具有函数作用域或全局作用域,并且可以被重新赋值。使用 var 声明的变量会存在变量提升的现象,即变量可以在声明之前使用

console.log(a); // 输出 undefined
var a = 10;
console.log(a); // 输出 10

let:在ES6引入的 let 是块级作用域的关键字,用于声明可变的变量。let 声明的变量只在块级作用域中有效,并且可以被重新赋值。与 var 不同,使用 let 声明的变量不存在变量提升,必须在声明后才能使用。

console.log(a); // 抛出错误,a未定义
let a = 10;
console.log(a); // 输出 10

const 同样在ES6引入,表示声明一个常量。const 声明的变量也具有块级作用域,并且不能被重新赋值,它是一个只读的常量。一旦被赋值后,就不能再改变其值。

const PI = 3.1;
PI = 3; // 抛出错误,常量不能被重新赋值

2.请使用===/!==来比较true/false或者数值

在JavaScript中,使用= = =和!= =来比较true、false或者数值,是因为它们是严格相等运算符和严格不相等运算符。

= = =用于判断两个值是否相等且类型也相同,如果相等且类型相同,则返回true,否则返回false。!==则表示两个值不相等或者类型不同时返回true,相等且类型相同时返回false。

与之相对的是相等运算符 = = 和不相等运算符 !=,它们允许进行隐式的类型转换。例如,使用等号比较数字和字符串时,会尝试将字符串转换为数字进行比较。而严格相等运算符 = = = 和严格不相等运算符 != = 不进行类型转换,只有在值和类型都相等时才返回true。

使用严格相等运算符 = = = 和严格不相等运算符 != = 可以避免一些常见的类型转换错误和意外情况。它们提供了更严格的比较方式,能够更准确地判断两个值是否完全相等,既包括值的内容,也包括值的类型。

console.log(5 === 5);    // 输出 true
console.log("10" === 10);   // 输出 false,类型不同
console.log(true === 1);    // 输出 false,类型不同
console.log(5 !== "5");     // 输出 true,值和类型都不相等
console.log(null !== undefined);   // 输出 true,值和类型都不相等

3.使用对象字面量替代new Array这种形式

使用字面量替代new Array的好处有很多

1.语法简洁:对象字面量的语法更为简洁和直观。使用对象字面量创建数组只需使用方括号[],将元素用逗号分隔即可,而使用new Array则需要额外的构造函数调用和圆括号。

2.避免歧义:在一些情况下,使用new Array可能导致意外的结果。当传递单个数字参数给new Array时,它会创建一个具有指定长度的稀疏数组(Sparse Array)。例如,new Array(5)将创建一个长度为5的空数组。而使用对象字面量[5]则会创建一个只有一个元素的数组,元素的值为5。

3.初始化元素:通过对象字面量创建数组时,可以直接在方括号内指定数组的初始元素。例如,[1, 2, 3]将创建一个包含3个元素的数组,而不需要额外的语句来添加元素。

4.可读性:对象字面量的语法更加直观和易读。使用方括号和逗号表示数组元素,可以清晰地看出数组的内容,而不必将数组元素的值放在构造函数的参数中。

4.不要使用全局函数

也可以说成不推荐使用,为什么不推荐那?

1.命名冲突:在JavaScript中,全局作用域下的函数具有全局可见性,如果多个库或脚本都定义了相同名称的全局函数,就会发生命名冲突。这可能导致函数被覆盖或产生意想不到的错误。

2.隐式依赖:全局函数可以在任何地方被调用,这样就使得代码的依赖关系变得不明确。如果函数内部使用了其他全局变量或函数,那么就需要确保这些依赖项在调用之前已经存在。这增加了代码的复杂性,使得代码更难以理解和维护。

3.可维护性:通过将函数封装在特定的模块或命名空间中,可以提高代码的可维护性。将函数声明在局部作用域中,可以减少对全局状态的依赖,并且可以更好地控制函数的访问权限。

4.可测试性:全局函数难以进行单元测试,因为它们无法被轻易地模拟或替换。相反,将函数封装在模块中,可以更容易地进行单元测试,因为可以通过依赖注入或模块的替代实现来隔离和测试函数。

5.Switch语句必须带有default分支

原因无它,添加default分支是为了处理未匹配到任何case的情况

6.If语句必须使用大括号

1.明确代码块范围:使用大括号可以明确指定if语句的代码块范围,即被执行的语句。这样可以避免代码在逻辑上被误解或产生错误的结果。如果省略了大括号,那么if语句只能包含单个语句,这可能导致混淆并引发潜在错误。

2.增加代码的可读性:使用大括号可以提高代码的可读性。通过明确定义代码块范围,在阅读代码时可以更清楚地理解逻辑和代码的意图。这对于团队合作、代码维护以及以后可能的更改非常重要。

3.避免错误:如果不使用大括号,当需要在if语句内添加更多的语句时,可能会犯下错误。因为没有大括号的限制,新添加的语句可能会被错误地视为与if无关的语句。这可能导致逻辑错误或产生预期之外的结果。

4.符合编码规范:许多编码规范和最佳实践要求在if语句中始终使用大括号。这是为了统一团队的代码风格,并减少潜在的错误。符合这些规范可以提高代码的一致性和可维护性。

7.for-in循环中的变量 应该使用var`关键字明确限定作用域,从而避免作用域污染

相关文章
|
4月前
|
JavaScript 前端开发 程序员
JS小白请看!一招让你的面试成功率大大提高——规范代码
JS小白请看!一招让你的面试成功率大大提高——规范代码
|
5月前
|
JavaScript 前端开发
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)
63 1
|
6月前
|
JavaScript 前端开发
JavaScript的规范代码风格
JavaScript的规范代码风格
25 1
|
7月前
|
缓存 JavaScript 前端开发
前端 JS 经典:CommonJs 规范
前端 JS 经典:CommonJs 规范
67 0
|
7月前
|
JavaScript
JS模块化规范之ES6及UMD
JS模块化规范之ES6及UMD
92 3
|
JavaScript 前端开发
【Node学习】—Node.js中模块化开发的规范
【Node学习】—Node.js中模块化开发的规范
|
前端开发 JavaScript 编译器
前端开发规范:命名规范、html规范、css规范、js规范(四)
前端开发规范:命名规范、html规范、css规范、js规范
227 0
|
前端开发 JavaScript
前端开发规范:命名规范、html规范、css规范、js规范(三)
前端开发规范:命名规范、html规范、css规范、js规范
120 0
|
数据采集 前端开发 JavaScript
前端开发规范:命名规范、html规范、css规范、js规范(二)
前端开发规范:命名规范、html规范、css规范、js规范
|
1月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
26 1
JavaScript中的原型 保姆级文章一文搞懂