Skip to main content

数据类型

Number类型

Q:数值转换的方法有哪些?

  • A:
    • 用于所有类型转换:Number()
    • 用于字符串转数值:parseInt()、parseFloat();

Q:parseInt如何使用?

  • A:

    parseInt(string,format)
    • string:字符串(最前面的空格会被忽略,即从第一个非空格字符开始转换)。

    返回值出错场景

    1. 返回NaN:
      • 原因一:string参数不是数值字符、加号或减号。(string为空字符)

Q:parseInt匹配流程是什么?

  • A:从第一个字符是数值字符、加号或减号,依次检测每个字符,直到字符串末尾,或碰到非数值字符。

    parseInt('1234blue')//1234

    //小数点不是有效的整数字符
    parseInt('22.5')//22

Q:string.raw是什么?怎么用?

  • A:直接获取原始的模板字面量内容(如换行符或 Unicode 字符),而不是被转 换后的字符表示

    console.log(`\u00A9`); // ©
    console.log(String.raw`\u00A9`); // \u00A9

    注意:换行符(\n)在该方法中不会起作用

    • 使用场景:处理url时,防止被转换成特殊字符。

      const 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:检测传递的值是否为数字值并且是否等价于 NaN

    • isNaN:检测你传递的值是否一个 number

      NaN:是一个特殊的数字,表示Not A Number

Q:如何获取JS中的最大值(最小值)?

  • A:

    Number.MAX_VALUE
    //最大值(1.7976931348623157e+308)
    //注意⚠️:如果使用Number表示的数字超过了最大值则会返回一个 Infinity

    Number.MIN_VALUE
    //最小值(5e-324 大于0的最小值)
    //注意⚠️:如果使用Number表示的数字小于了最小值则会返回一个 -Infinity

Symbol类型

Q:是什么?

  • A:是原始值,且符号实例是唯一、不可变的。

Q:能干啥?

  • A:确保对象属性使用唯一标识符,不会发生属性冲突的危险。

Q:如何使用?

  • A:

    注意:即便两个相同的Symbol,彼此却不相等

    Symbol('test')!==Symbol('test')

Q:能不能用object.keys()将其遍历出来?

  • A:不能,Symbol类型是不可枚举的。而Object.keys方法返回对象上的所有可枚举的键属性。

    const info = {
    [Symbol('a')]: 'b'
    }

    console.log(info)//{Symbol('a'): 'b'}
    console.log(Object.keys(info))//[]

String类型

常用转义字符

转义字符表示
\""
\''
\n换行
\t制表符
\\\

Boolean类型

Null类型

Q:如何判断是否为null?

  • A:

    const test=null;
    cosole.log(test===null)

Undefined类型

Q:undefined和null的区别?

  • A:

    const 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:看符号位置,在前则先,在后则过后再处理

    let number = 0			 // 输出		number
    console.log(number++)// 0 1
    console.log(++number)// 2 2

运算符

Q:运算符优先级是什么?

  • A:从右到左还是从左往右。

语句

return

Q:return自动添加分号规则是啥?

  • A:对于换行return会自动添加分号

    function 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

    async fun(){
    for(let ele of arr){
    await request(ele);
    }
    }