2024-11-15 日报 Day7

2024-11-15 日报 Day7

Yuyang 前端小白🥬

今日的鸡汤

无人扶我青云志,我自踏雪至山巅。

今日学习内容

1、《JavaScript数据结构与算法》 P1-53

今日笔记

1、JS的基本数据类型有: Undefined、Null、Boolean、Number、String、Symbol、BigInt。
2、JS的引用数据类型有: Object、Array、Function、Date、RegExp、Error。
3、JS中的真值和假值:

数值类型 转换成布尔值
undefined false
null false
布尔值 true时true false时false
数字 +0、-0和NaN都是false,其他都是true
字符串 如果字符串是空的(长度是0)就是false,其他都是true
对象 true

4、相等运算符( == 和 === )

  • ==
类型(x) 类型(y) 结果
null undefined True
undefined null True
数字 字符串 x == toNumber(y)
字符串 数字 toNumber(x) == y
布尔值 任何类型 toNumber(x) == y
任何类型 布尔值 x == toNumber(y)
字符串或数字 对象 x == toPrimitive(y)
对象 字符串或数字 toPrimitive(x) == y

toNumber

值类型 结果
undefined NaN
null +0
布尔值 如果是true,返回1;如果是false,返回+0;
数字 数字对应的值
字符串 将字符串解析成数字。如果字符串中包含字母,返回NaN;如果是由数字字符组成的,转换成数字
对象 Number(toPrimitive(value))

toPrimitive

值类型 结果
对象 如果对象的valueOf方法的结果是原始值,返回原始值。如果对象的toString方法返回原始值,就返回这个值;其他情况都返回一个错误。
  • ===
类型(x) 结果
数字 x和y数值相同(但不是NaN) true
字符串 x和y是相同的字符 true
布尔值 x和y都是true或false true
对象 x和y引用同一个对象 true

5、在类的定义里声明每个实例都会创建自己的函数副本。使用原型方法可以节约内存和降低实例化的开销。不过原型方法只能声明公共函数和属性,而类定义可以声明只在类的内部访问的私有函数和属性。
6、ES6展开运算符(…)可以将数组展开成参数列表,也可以将对象展开成键值对列表。

1
2
3
4
5
6
7
8
var params = [3, 4, 5];
console.log(add(...params)); // 12

// 在函数中展开操作符可以代替arguments,当作剩余参数使用
function restParamaterFunction(x, y, ...a) {
return (x + y) * a.length;
}
console.log(restParamaterFunction(1, 2, "hello", true, 7)); // 9

等价于

1
2
3
4
function restParamaterFunction (x, y) {
var a = Array.prototype.slice.call(arguments, 2);
return (x + y) * a.length;
};

7、ES6引入了数组解构的概念,可以用来一次初始化多个变量。
8、虽然ES6引入了声明类的方法但是JavaScript仍然是基于原型的。类只是原型的语法糖。使用新的类语法可以为属性创建存取器函数。

1
2
3
4
5
6
7
8
9
10
11
class Person {
constructor(name) {
this._name = name;
}
get name() {
return this._name;
}
set name(value) {
this._name = value;
}
}
此页目录
2024-11-15 日报 Day7