Javascript's cheat sheet

js和其他语言的主要区别

 

js的关键字

 

常用类型

 

函数

  1. 函数表达式: 它与上面的方式声明几乎一样,唯一的区别就是函数名 sum1 被提到前面作为变量,并且多了赋值操作。使用起来也是一样的。

     

  2. 箭头函数: ES6 版本新增了使用箭头语法 => 来定义函数,这种语法比另外两种方法更为简洁。

 

三元运算符

使用规则: 条件 ? 表达式1 : 表达式2。当条件为真时,执行表达式1,否则执行表达式2。该运算符经常当作 if-else 语句的简捷形式来使用。例如:

 

对象

JavaScript 中的对象

在 JavaScript 中,对象是一种重要的数据类型,用于存储键值对(key-value pairs)和更复杂的实体。对象可以用来表示现实生活中的事物,以及实现面向对象编程的核心概念。


1. 什么是对象?

对象是一个无序的键值对集合,其中键是属性的名称,值可以是任意数据类型(包括其他对象、数组或函数)。

示例:


2. 创建对象的方法

  1. 对象字面量(Object Literal)

  2. 使用 new Object()

  3. 使用构造函数

  4. 使用 Object.create()


3. 访问对象属性

对象属性可以通过点表示法方括号表示法访问。


4. 动态添加/删除属性


5. 遍历对象


6. 常用内置方法

  1. Object.keys(obj):获取对象的所有键

  2. Object.values(obj):获取对象的所有值

  3. Object.entries(obj):获取键值对数组

  4. Object.assign(target, ...sources):合并对象

  5. Object.freeze(obj)Object.seal(obj)

    • Object.freeze():冻结对象,禁止修改属性。

    • Object.seal():禁止添加或删除属性,但允许修改现有属性值。


7. 对象的特殊功能

对象方法

对象可以包含函数作为属性,称为方法

this 关键字

this 在对象中指代当前对象。


8. 对象和引用

对象是引用类型,直接赋值会复制引用地址,而不是值。

示例:


9. 对象解构

通过解构语法快速提取对象中的属性。


10. JSON 对象

JavaScript 对象与 JSON(JavaScript Object Notation)类似,但 JSON 只允许字符串作为键,且是文本格式。

 

 

异步

 

 

闭包

闭包(Closure) 是 JavaScript 中一个非常重要的概念,它允许函数访问其词法作用域,即使这个函数是在其词法作用域之外执行的。闭包是 JavaScript 中实现数据封装、私有变量等的核心机制。

1. 闭包的定义

闭包是指一个函数能够记住并访问它的词法作用域,即使这个函数是在当前词法作用域之外执行的。换句话说,闭包使得内部函数始终可以访问其外部函数的变量

2. 词法作用域

JavaScript 的作用域是词法作用域,意味着函数的作用域是在函数定义时确定的,而不是在函数调用时确定的。闭包正是利用了这种特性,使得函数可以“记住”它在定义时的作用域。


3. 闭包的实现和使用

示例 1:基本闭包

解释:


4. 闭包的特性和作用

  1. 访问外部函数的变量

    • 闭包能够记住外部函数中的变量,即使外部函数执行完毕,内部函数依然可以访问这些变量。

  2. 模拟私有变量

    • JavaScript 没有内置的私有变量机制,但是闭包可以用于创建私有变量。

    • 通过在函数中使用局部变量并返回操作这些变量的函数,可以使变量在函数外部不可直接访问。

示例:模拟私有变量

解释:


5. 闭包的应用场景

  1. 数据封装和私有化

    • 闭包可以用来创建私有数据,避免全局变量污染。

  2. 回调函数和事件处理

    • 在回调函数中,闭包可以记住定义时的上下文,避免作用域丢失的问题。

  3. 延迟执行

    • 闭包也用于需要延迟执行的场景,比如定时器或异步操作。

示例:延迟执行

在上面的例子中,匿名函数通过闭包访问了参数 message,即使 delayedMessage 函数已经执行完毕。


6. 常见的闭包问题

  1. 循环中的闭包问题

    • 在使用 for 循环配合闭包时,可能遇到变量共享的问题。

    • 在 ES5 中,可以使用立即执行函数(IIFE)解决;在 ES6 中,可以使用 let 关键字,因为 let 有块作用域。

示例:循环中的闭包问题


7. 闭包的内存管理

由于闭包会保留对外部函数作用域中变量的引用,这可能导致这些变量在函数执行结束后依然存在,造成 内存泄漏。因此,在使用闭包时,需要注意:

  1. 避免不必要的闭包:不要随意在全局环境中创建闭包,以免意外地占用内存。

  2. 解除引用:当闭包不再需要时,可以通过将引用设置为 null 的方式来帮助垃圾回收。