JavaScript
ECMAScript 是一种脚本语言规范,JavaScript 是实现规范的语言
变量
可以通过 let 声明变量,变量可以是 number string object boolean 等等,可以用 typeof
查看变量类型。
// number
let a = 13
let b = 1.2
// string
let c = "abc"
// object
let d = {
name: "jeff",
age: 12
}
// boolean
let e = true
常量用 const 声明,常量不可以重新赋值
const PI = 3.14
函数
通过 function 定义函数
function hello() {
console.log("hello sir")
}
function sayHello(name) {
console.log("hello", name)
}
优雅的箭头函数
let hello = () => {
console.log("hello sir")
}
let sayHello = (name) => {
console.log("hello", name)
}
有返回值的函数
let add = (a, b) => {
return a + b
}
// 隐式返回
let add2 = (a, b) => a + b
参数可以有默认值
let sayHello = (name = "john") => {
console.log("hello", name)
}
数组
声明数组
// 声明空数组,长度为 0
let a1 = []
// 声明指定长度的数组,元素为 undefined
let a2 = new Array(3)
// 声明并初始化数组元素
let a3 = [1, "tom", true]
可以用 push 和 pop 在尾部添加或弹出元素,可以用 unshift 和 shift 在头部添加或弹出元素
let arr = [1,2,3]
arr.push(4)
// [ 1, 2, 3, 4 ]
arr.pop()
// [ 1, 2, 3 ]
arr.unshift(0)
// [ 0, 1, 2, 3 ]
arr.shift()
// [ 1, 2, 3 ]
splice 方法可以删除元素,第一个变量为其实索引,第二个变量为删除元素的个数
let arr1 = [1,2,3,4,5]
let arr2 = arr1.splice(2,1)
// arr1: [ 1, 2, 4, 5 ]
// arr2: [ 3 ]
排序
注意 number 排序需要手动传入判断大小的方法,否则就是字符串排序
let arr1 = ["bob", "david", "carol", "alice"]
let arr2 = [4,1,15,2,3]
let arr3 = [4,1,15,2,3]
arr1.sort()
arr2.sort()
arr3.sort((a, b) => a - b)
// arr1 [ 'alice', 'bob', 'carol', 'david' ]
// arr2 [ 1, 15, 2, 3, 4 ]
// arr3 [ 1, 2, 3, 4, 15 ]
遍历数组
let names = ["alice", "bob", "caleb"]
for(let name of names) {
console.log(name)
}
for(let i=0; i<names.length; i++) {
console.log(names[i])
}
names.forEach((name) => {
console.log(name)
})
filter 方法可以根据条件过滤并生成新的数组
let names = ["alice", "bob", "caleb"]
let arr = names.filter((name) => {
return name.length > 3
})
// [ 'alice', 'caleb' ]
展开数组
let arr = [1,3,2]
let arr2 = [...arr]
// arr2: [ 1, 3, 2 ]
集合框架
Map
set 方法设置键值对,会覆盖原有的
has 方法判断是否存在某个键
delete 方法删除键值对
clear 方法清除所有键值对
let mp = new Map()
mp.set("k1", "v1")
mp.has("k1")
mp.delete("k1")
mp.clear()
创建并初始化 Map
let mp = new Map([
["k1", "v1"],
["k2", 2]
])
遍历 Map
let mp = new Map([
["name", "jeff"],
["age", 1]
])
for(let entry of mp) {
console.log(entry)
}
// [ 'name', 'jeff' ]
// [ 'age', 1 ]
for(let [key, value] of mp) {
console.log(key, value)
}
// name jeff
// age 1
mp.forEach((value, key) => {
console.log(key, value)
})
// name jeff
// age 1
Set
has 方法判断是否元素存在
delete 方法删除元素,元素存在返回 true ,否则返回 false
add 方法添加元素,并返回 set
let st = new Set(["apple", "banana"])
// Set(2) { 'apple', 'banana' }
let b = st.has("apple") // true
// Set(3) { 'apple', 'banana', 'coconut' }
st.delete("apple")
// Set(2) { 'banana', 'coconut' }
Set 转为数组
let st = new Set(["apple", "banana", "coconut"])
let arr = Array.from(st)
遍历
let names = ["jim", "merry", "alice"]
for(let name of names) {
console.log(name)
}
names.forEach(name => {
console.log(name)
})
对象
创建一个简单对象
let people = {
name: "jeff",
age: 1
}
可以通过点或者中括号获取和修改属性,可以通过 in 判断是否存在某个属性
people.age = 2
people["name"] = "jim"
people["job"] = "typist"
// { name: 'jim', age: 2, job: 'typist' }
console.log(age in people ) //true