每日两道js面试题

94 阅读2分钟
  1. NaN是什么?

NaN指"不是一个数字"(not a number),表示未定义或不可定义的值 NaN 是一个"警戒值"(sentinel value, 有特殊用途的常规值),用于指出 数字类型 中的错误情况, 即"执行数学运算没有成功, 这是失败后返回的结果".

NaN是一个特殊值, 它和自身不相等,返回布尔值false 判断内容是否是NaN,通过isNaN来判断

NaN结果是数值类型 但是不是一个具体的数字
1, 有 非数字参与的运算 运算结果 往往是 NaN
'北京' - 100
表示运算结果是数值类型 但是不是某一个具体的数字
2, 有 NaN 参与的运算 运算结果 一定是 NaN
3, 两个 NaN 并不相等
4, NaN 可以作为数值 直接赋值给变量
NaN 赋值时要注意大小写
补充知识
表达式1 === 表达式2
判断 两个表达式的值 是不是 相等
执行结果是 true 表达式1 和 表达式2 的值 相等
执行结果是 false 表达式1 和 表达式2 的值 不等
// 运算结果是 数值类型 并且是一个具体的数字
// console.log( 100 - 200 );

// 第一 '北京' - 200 运算执行结果 是 数值类型的数据
// 第二 '北京' - 200 运算执行结果 不是一个具体的数字 计算机程序使用 NaN 表示
console.log( '北京' - 200 );

// 有 NaN 参与的运算 结果是 NaN
console.log( NaN - 100 );
console.log( NaN / 100 );

// 全等判断
console.log( 6 === 6 );
console.log( 6 === 8 );

// NaN 不是一个具体的数字 两个NaN 不能判断 是不是 相等 结果就是false
console.log( NaN === NaN );
console.log( '北京' - 100 === '上海' - 300 );

// 将 NaN 作为 数值 直接赋值给变量
var d = NaN ;
console.log( d );
  1. let const var 的区别
    声明方式 变量提升 暂时性死区 重复声明 初始值 作用域
      var       允许     不存在    允许   不需要 非块级
      let      不允许     存在    不允许  不需要  块级
      const    不允许     存在    不允许   需要   块级