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

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
  • 空字符串(""

函数

调用自身

  1. 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集合,元素不重复