你不可不知的 15 个 JavaScript 小贴士( 二 )

8. 使用速记符号(对象文字)在JavaScript中设计对象或数组时,可以通过选择速记符号来节省空间 。实现方式是在声明期间而不是之后设置对象或数组的属性 。
这样做,我们就不必确定在每一行上设置了哪个对象或数组,从而使这部分代码更易于阅读 。虽然是一个很小的变化,但随着对象和数组逐渐变得复杂,绝对可以为你的团队节省很多时间 。
例如创建一个对象
普通写法:
var computer = new Object();computer.caseColor = 'black';computer.brand = 'Dell';computer.value = https://www.isolves.com/it/cxkf/yy/js/2024-03-21/1200;computer.onSale = true;速记写法:
var computer = {caseColor: 'black';brand: 'Dell';value: 1200;onSale: true;}速记数组:
var computerBrands = ['Dell','Apple','Lenovo','HP','Toshiba','Sony'];9. 使用严格模式捕获静默错误与其他编程语言(如C++和Java)相比,JavaScript是一种语法非常宽松的语言 。虽然这种宽大处理有助于在不引发错误的情况下运行代码,但可能会导致隐形的错误 。所以我们需要解决隐形的静默错误,否则可能会导致意料之外的行为 。
解决方案就是严格模式 。包括两项主要更改:

  • 以前可以通过编译器的静默错误现在会引发错误
  • 修复了阻止JavaScript优化代码的错误
  • JavaScript Strict Code程序通常比非严格模式下的程序运行得更快 。
或者在脚本部分的顶部,或者在所需功能之前(部分严格),添加'use strict';即可进入严格模式 。
10. 设置默认值创建对象时,可以为对象的部分或全部属性设置默认值 。这样做不仅可确保每个属性的值都不是undefined,而且还声明了属性所需的数据类型 。此外 , 通过不为某些属性设置默认值,还可以向团队传达对象正常运行不需要这些值的意思 。
function logProperty({address = '111 11th Street, 11111',unit,//optionallandlord = 'Sara',tenant = 'Raj',rent = 500, })上面的代码中,unit属性可选 , 但其他四个属性(预期的数据类型)都必须有默认值 。为此,unit留空 。
11. 使用模板字面量组合字符串组合字符串可太麻烦了,尤其是在组合字符串和变量时 。我们可以使用模板字面量(用反引号标记),简化组合过程 , 因为模板字面量同时接受字符串和变量 。
function greet(name) {return `Hi, ${name}`; //template literal}console.log(greet('Leo'));注意,通过使用模板字面量,我们可以根据传递的名称、组合字符串Hi和变量name传递的值来记录对用户的问候语 。因此 , 此代码打?。篐i, Leo
12. 使用includes解决存在性测试测试数组中值是否存在是一个常见问题 。值得庆幸的是,JavaScript有一个特殊的数组方法include()——如果数组包含搜索值,则返回布尔值 。不用搜索数组,这是一种高效、易于阅读的解决方案 。
const sections = ['contact', 'shipping']; function displayShipping(sections) {return sections.includes('shipping');} console.log(displayShipping(sections));此外,还有indexOf()方法可用于检查值以及查找索引 。
13. 用falsy值缩短条件在JavaScript的跨变量类型中 , 有一些值等效于false,包括:
  • 布尔值false
  • null
  • 0
  • NaN
  • ' '
  • " "
在 JavaScript 中,等效的==意味着两个对象共享相同的值 , 但它们可能不是相同的类型 。完全相同的===表示两个对象类型相同,值也相同 。这有什么用呢?
好吧,与其创建单独的变量来保存布尔值 , 不如使用上述值作为默认值来报告false,如果没有任何东西覆盖的话 。比如下面的例子 , 你需要检查给定的员工是否接受过设备培训(equipmentTraining) 。这台机器只需要最低级别的培训,培训水平并不重要 。
因此,我们用if语句检查equipmentTraining是否具有falsy值,即默认的' ' 。如果是,则执行if语句并返回员工未获得授权 。如果equipmentTraining包含除默认值以外的任何字符串 , 则表示具有truthy值,因此不会执行if语句 。


推荐阅读