# JavaScript

JavaScript 通过原型链而不是类来支持面向对象编程(有关 ES6 类的内容参考这里Classes (opens new window),有关对象原型参考见此继承与原型链 (opens new window))。JavaScript同样支持函数式编程——因为它们也是对象,函数也可以被保存在变量中,并且像其他对象一样被传递。

js basic

# JS数据类型

任何编程语言都不可缺少的组成部分——“类型”,JavaScript 中的类型应该包括这些:

JavaScript 还有一种内置的 Error (opens new window)(错误)类型。

# unll、undefined

undefined (opens new window) 是一个“undefined(未定义)”类型的对象,表示一个未初始化的值,也就是还没有被分配的值。

# 变量

在 JavaScript 中声明一个新变量的方法是使用关键字 letconstvar (opens new window)

  • **let **语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值。
  • const 允许声明一个不可变的常量。这个常量在定义域内总是可见的。
  • var 是最常见的声明变量的关键字。它没有其他两个关键字的种种限制。这是因为它是传统上在 JavaScript 声明变量的唯一方法。使用 var 声明的变量在它所声明的整个函数都是可见的。

# 控制结构

  • if ... else
  • for
  • switch
  • ...

# 对象

JavaScript 中的对象,Object,可以简单理解成“名称-值”对。

  • 有两种简单方法可以创建一个空对象:

    var obj = new Object();
    

    var obj = {};
    

    这两种方法在语义上是相同的。第二种更方便的方法叫作“对象字面量(object literal)”法。这种也是 JSON 格式的核心语法,一般我们优先选择第二种方法。

# 数组

JavaScript 中的数组是一种特殊的对象。它的工作原理与普通对象类似(以数字为属性名,但只能通过[] 来访问),但数组还有一个特殊的属性——length(长度)属性。这个属性的值通常比数组最大索引大 1。

创建数组的传统方法是:

var a = new Array();
a[0] = "dog";
a[1] = "cat";
a[2] = "hen";
a.length; // 3

使用数组字面量(array literal)法更加方便:

var a = ["dog", "cat", "hen"];
a.length; // 3

注意,Array.length并不总是等于数组中元素的个数,如下所示:

var a = ["dog", "cat", "hen"];
a[100] = "fox";
a.length; // 101

记住:数组的长度是比数组最大索引值多一的数。

# 函数

学习 JavaScript 最重要的就是要理解对象和函数两个部分。最简单的函数就像下面这个这么简单:

function add(x, y) {
    var total = x + y;
    return total;
}

这个例子包括你需要了解的关于基本函数的所有部分。

# 闭包

闭包是 JavaScript 中最强大的抽象概念之一——但它也是最容易造成困惑的。它究竟是做什么的呢?

function makeAdder(a) {
  return function(b) {
    return a + b;
  }
}
var add5 = makeAdder(5);
var add20 = makeAdder(20);
add5(6); // ?
add20(7); // ?

makeAdder 这个名字本身,便应该能说明函数是用来做什么的:它会用一个参数来创建一个新的“adder”函数,再用另一个参数来调用被创建的函数时,makeAdder 会将一前一后两个参数相加。

一个闭包,就是 一个函数 与其 被创建时所带有的作用域对象 的组合。闭包允许你保存状态——所以,它们可以用来代替对象。这个 StackOverflow 帖子里 (opens new window)有一些关于闭包的详细介绍。

# 学习资料

Last Updated: 6/16/2022, 3:21:21 PM