You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.2 KiB
3.2 KiB
JavaScript高级知识
2022/6/20
语法和数据类型
变量的名字又叫做标识符
严格模式下直接赋值会出错x = 12
如果没有赋初始值,则其值为 undefined
var可以变量提升,let不行
使用 undefined 来判断一个变量是否已赋值 input === undefined
undefined
值在布尔类型环境中会被当作 false
。
var myArray = [];
if (!myArray[0]) myFunction();
数值类型环境中 undefined
值会被转换为 NaN
。
var a;
a + 2; // 计算为 NaN
当你对一个 null
变量求值时,空值 null
在数值类型环境中会被当作 0 来对待,而布尔类型环境中会被当作 false
。例如:
var n = null;
console.log(n * 32); // 在控制台中会显示 0
对于函数来说,只有函数声明会被提升到顶部,而函数表达式不会被提升。
/* 函数声明 */
foo(); // "bar"
function foo() {
console.log("bar");
}
/* 函数表达式 */
baz(); // 类型错误:baz 不是一个函数
var baz = function() {
console.log("bar2");
};
在同一作用域中,不能使用与变量名或函数名相同的名字来命名常量。例如:
// 这会造成错误
function f() {};
const f = 5;
// 这也会造成错误
function f() {
const g = 5;
var g;
//语句
}
七种基本数据类型:Boolean、null、undefined、数字、高精度整数BigInt、字符串、Symbol
立即执行函数:立即执行函数只有一个作用:创建一个独立的作用域。这个作用域里面的变量,外面访问不到(即避免了「变量污染」)。
let a = 'xsxs';
(() => {let a;console.log(a)})()
字符串转换
x = "The answer is " + 42 // "The answer is 42"
y = 42 + " is the answer" // "42 is the answer"
"37" - 7 // 30
"37" + 7 // "377"
字符串
var str = "this string \
is broken \
across multiple\
lines."
console.log(str); // this string is broken across multiplelines.
流程控制和错误处理
下面这些值将被计算出 false (also known as Falsy values):
false
undefined
null
0
NaN
- 空字符串(
""
)
函数
调用自身
arguments.callee()
(译者注:ES5 禁止在严格模式下使用此属性)
剩余参数 剩余参数语法允许将不确定数量的参数表示为数组。在下面的例子中,使用剩余参数收集从第二个到最后参数。然后,我们将这个数组的每一个数与第一个参数相乘。这个例子是使用了一个箭头函数,这将在下一节介绍。
function multiply(multiplier, ...theArgs) {
return theArgs.map(x => multiplier * x);
}
var arr = multiply(2, 1, 2, 3);
console.log(arr); // [2, 4, 6]
箭头函数和普通函数
箭头函数 没有proptype属性,没有arguments,不能用new创建
"use strict"
const a1 = () => ({
name:"THIS",
method:{
get(){
console.log(this.names)
}
}
})
const obj = {
name:a1().name,
names:"I CAN DO IT",
...a1().method
}
console.log(obj.name)
obj.get()
this指向,普通函数指向调用者,箭头函数指向定义者
void 或者 void 不会返回内容
Map
键可以为任意类型
Set集合,元素不重复