数据类型
Number类型
Q:数值转换的方法有哪些?
- A:
- 用于所有类型转换:Number()
- 用于字符串转数值:parseInt()、parseFloat();
Q:parseInt如何使用?
A:
javascriptparseInt(string,format)string:字符串(最前面的空格会被忽略,即从第一个非空格字符开始转换)。
返回值出错场景
- 返回NaN:
- 原因一:
string参数不是数值字符、加号或减号。(string为空字符)
- 原因一:
Q:parseInt匹配流程是什么?
A:从第一个字符是数值字符、加号或减号,依次检测每个字符,直到字符串末尾,或碰到非数值字符。
javascriptparseInt('1234blue')//1234 //小数点不是有效的整数字符 parseInt('22.5')//22
Q:string.raw是什么?怎么用?
A:直接获取原始的模板字面量内容(如换行符或 Unicode 字符),而不是被转 换后的字符表示
javascriptconsole.log(`\u00A9`); // © console.log(String.raw`\u00A9`); // \u00A9注意:换行符(
\n)在该方法中不会起作用使用场景:处理url时,防止被转换成特殊字符。
javascriptconst path = `C:\Documents\Projects\table.html` String.raw`${path}` //"C:DocumentsProjects able.html" String.raw`C:\Documents\Projects\table.html` //C:\Documents\Projects\table.html
Q:Number.isNaN和isNaN有何区别?
- A:
Number.isNaN:检测传递的值是否为数字值并且是否等价于NaNisNaN:检测你传递的值是否一个numberNaN:是一个特殊的数字,表示Not A Number
Q:如何获取JS中的最大值(最小值)?
A:
javascriptNumber.MAX_VALUE //最大值(1.7976931348623157e+308) //注意⚠️:如果使用Number表示的数字超过了最大值则会返回一个 Infinity Number.MIN_VALUE //最小值(5e-324 大于0的最小值) //注意⚠️:如果使用Number表示的数字小于了最小值则会返回一个 -Infinity
Symbol类型
Q:是什么?
- A:是原始值,且符号实例是唯一、不可变的。
Q:能干啥?
- A:确保对象属性使用唯一标识符,不会发生属性冲突的危险。
Q:如何使用?
A:
javascript注意:即便两个相同的Symbol,彼此却不相等
javascriptSymbol('test')!==Symbol('test')
Q:能不能用object.keys()将其遍历出来?
A:不能,
Symbol类型是不可枚举的。而Object.keys方法返回对象上的所有可枚举的键属性。javascriptconst info = { [Symbol('a')]: 'b' } console.log(info)//{Symbol('a'): 'b'} console.log(Object.keys(info))//[]
String类型
常用转义字符
| 转义字符 | 表示 |
|---|---|
\" | " |
\' | ' |
\n | 换行 |
\t | 制表符 |
\\ | \ |
Boolean类型
Null类型
Q:如何判断是否为null?
A:
javascriptconst test=null; cosole.log(test===null)
Undefined类型
Q:undefined和null的区别?
A:
javascriptconst tmp = typeof null; const tmp1 = typeof undefined; // 1、检测类型不同 console.log("🚀 ~ file: index.jsx:70 ~ test ~ tmp:", { tmp, //object tmp1 //undefined }); // 2、比较不同 console.log(null == undefined); //=>true,原因:==属于‘值’比较,二者值都是undefined console.log(null === undefined); //=>false,原因:===属于‘值,类型’比较,二者值相同,但类型不同。
Object类型
操作符
一元操作符
Q:如何区分先增(减)还是后增(减)?
A:看符号位置,在前则先,在后则过后再处理
javascriptlet number = 0 // 输出 number console.log(number++)// 0 1 console.log(++number)// 2 2
运算符
Q:运算符优先级是什么?
- A:从右到左还是从左往右。
语句
return
Q:return自动添加分号规则是啥?
A:对于换行return会自动添加分号
javascriptfunction nums(a, b) { if (a > b) console.log('a is bigger') else console.log('b is bigger') return a + b } //相当于 //return; //a + b
for-in语句
Q:能干嘛?
A:用于枚举对象中的非符号(Symbol)键的属性(即:遍历key)
注意:
- 需要枚举的对象是null或undefined,则不执行循环体。
- 会遍历整个对象甚至原型中的属性
- 不能保证返回对象的属性的顺序
for-of语句
Q:能干嘛?
A:用于遍历可迭代对象的元素(即:遍历value)
支持for-awit-of
javascriptasync fun(){ for(let ele of arr){ await request(ele); } }