夯实Javascript基础。
基础范例有六种: null,undefined,boolean,number,string,symbol。
基础范例的值是保存在栈内存
中的简朴数据段
基础范例特征
基础范例最主要的特征
基础范例是稳定的
- 因而:基础范例没有splice,sort之类的直接转变变量的要领
- 强行转变基础范例会报错
// str 不能挪用 Array的 sort 和 splice Array.prototype.sort.call('strxyz'); // Uncaught TypeError: Cannot assign to read only property '2' of object '[object String]' Array.prototype.splice.call('strxyz'); // Uncaught TypeError: Cannot assign to read only property 'length' of object '[object String]' // object 能够运用 Array的sort 和 splice Array.prototype.sort.call({x: 1, y: 2}); // {x: 1, y: 2} Array.prototype.splice.call({x: 1, y: 2}); // []
基础范例没有
__proto__
没有属性
str.x = 1; console.log(str.x); // undefined
一切对基础范例属性的接见都是接见的
基础包装范例
(String、Number、Boolean)当你挪用 `str.length` 时,现实历程是如许的: -> 建立String范例的一个实例 -> 在实例上挪用指定的要领 -> 烧毁这个实例 var str = 'abc'; var _str = new String(str); var len = _str.length; _str = null; console.log(len);
其他特征
typeof null === ‘object’
- (汗青遗留问题,由于000开首示意对象,而null满是0)
前提推断时
undefined
null
false
NaN
''
0
-0
为 false,其他都为 true- (前提推断时会隐式转换为Boolean)
JS只要浮点范例(double),没有整型
1 === 1.0
NaN 也属于 number 范例,而且 NaN 不等于本身。
var a = NaN; a !== a;
String
范例是类数组,具有iterator
typeof String('x')[Symbol.iterator] === 'function'
基础范例检测
检测基础范例用 typeof
// typeof 只合适检测 基础范例
typeof new Date() // 'object'
typeof [] // 'object'
typeof {} // 'object'
typeof console.log // 'function'
基础范例转换
基础范例转换时,起首会挪用 valueOf
,然后挪用 toString
。而且这两个要领能够重写。
var a = 1;
var obj = {x: 1};
obj.toString === '[object Object]';
var arr = [2, 3];
arr.toString() === '2,3';
a + obj === '1[object Object]';
a + arr === '12,3';
Symbol.toPrimitive
该要领在转基础范例时挪用优先级最高。
let a = {
valueOf() {
return 1;
},
toString() {
return '2';
},
[Symbol.toPrimitive]() {
return 3;
}
}
1 + a // => 4
四则运算
- 在四则运算中,除了’+’ 其他操纵都邑以数字举行盘算
- 假如是 + 运算,假如不是一切字面量都是
number
,那末会转换为字符串(toString
)举行拼接
End
延续更新中,Github信息更多哦,你的⭐是我最大的支撑。
检察概况,