JavaScript速成

本文最后更新于:2022年7月21日 下午

JavaScript速通

[TOC]

JavaScript(简称JS)是用于网页的脚本语言,控制了网页的行为,它的标准用ECMA命名。要使用JS非常简单,比Python、C++简单很多,只需要在html页面中的<script>标签内写入JS代码,然后用浏览器运行即可。

基础语法

数据类型

数据类型 定义方式 说明
数字Number 3.4、33e5 直接写
字符串String “yes”、‘no’ 用单引号或者双引号(和Python一样)
数组Array [4, 3, 54] 值可以不同类型(和Python一样)
对象Object {age: “asdf”} 键值对,键不用引号,值可以随意类型。获取对象属性用对象.属性,同时也支持Python字典那样的访问形式
函数Function function f(param_a){xxx} 用关键字function
布尔值bool true false 小写
空Null
未定义underfined 和上面差不多

变量

变量用var关键字声明,比其他语言能多用$这个字符命名。

在ECMA2015中添加了letconst关键字,let声明一个只在代码块{}内有效的变量,const声明一个只读常量。

布尔比较

  1. &&与 、||或、!
  2. > < >= <=比大小
  3. ==转换数据类型再比较,一般用得少 ===不转换数据类型比较,假如类型不同返回false。
  4. NaN是特殊的Number,用它比较始终为false,用isNan()函数验证。(不能if(a===NaN))
  5. 比较浮点数最好算差的绝对值小于某个很小的数

字符串(ES6)

  1. \转义

  2. 用波浪号下面的反斜杠来表示多行字符串

  3. +连接字符串,或者用模板字符串(如同python里的f"{}")。

    1
    2
    var age = 10;
    var message = "我${age}岁了"
  4. 用索引访问、.length获取长度、.toUpperCase()变大写等等

条件

if ... else if ... else ...

循环

  1. 用c++那样的for(;;)
  2. for ... in ...列出对象的所有属性
  3. whiledo...while

函数

函数用function关键字定义,假如没有return就返回undefined。也可以把函数赋值给一个变量。

1
2
3
function fun(x){...}
// 等于
var fun = function(x){...}

调用函数时,可以随意传入参数,比定义的多和少都没关系,假如参数少了那未知的会变成undefined

在函数内有个特殊的变量arguments,是一个类似数组的东西,内容是传入的所有参数。

ES6引入了类似Python中*args这样的语法,即rest

1
2
//rest前面用三个点, rest的值是额外的参数
function fun(a, b, ...rest){...}

高级用法

ES6 解构赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var [x, y, z] = ['hello', 'JavaScript', 'ES6'];
var [, , z] = ['hello', 'JavaScript', 'ES6']; // 可以忽略
// 对象的嵌套解构赋值
var person = {
name: '小明',
age: 20,
gender: 'male',
passport: 'G-12345678',
school: 'No.4 middle school',
address: {
city: 'Beijing',
street: 'No.1 Road',
zipcode: '100001'
}
};
var {name, address: {city, zip}} = person;
// 交换
var x=1, y=2;
[x, y] = [y, x]

对象方法

1
2
3
4
5
6
7
8
var xiaoming = {
name: '小明',
birth: 1990,
age: function () {
var y = new Date().getFullYear();
return y - this.birth;
}
};

箭头函数

1
2
3
4
5
x => x*x
// 相当于
function (x) {
return x * x;
}