Skip to content
Go back

JavaScript类型转换和严格模式

Updated:
Edit page

我嘞个,今天面试被拷打了,必须使使劲再学一遍JS了,但是好像看视频学习不是一个好方法,所以这次看文档,以下内容都是我觉得有必要记录下的,不一定完整

类型转换

以下表达式的值是什么?

1. "" + 1 + 0
2. "" - 1 + 0
3. true + false
4. "2" * "3"
5. 4 + 5 + "px"
6. "$" + 4 + 5
7. "4" - 2
8. "4px" - 2
9. "  -9  " + 5
10. "  -9  " - 5
11. null + 1
12. undefined + 1
13. " \t \n" - 2

答案:

  1. ""在表达式的最开头,以后的数字都会被认为是字符串,最后结果是"10"
  2. 这里出现了-,不能用上一个题的方法,这里被看作是数字运算,结果是-1
  3. 这里布尔值被转成number类型计算,最后结果是1
  4. 6
  5. 这个题目区别于第一个题目,这里的计算方法是先算4+5=9,之后再把9转成字符串,最后结果就是"9px"
  6. "$45"
  7. 2
  8. NaN
  9. " -9 5"
  10. -14
  11. 1
  12. NaN原因是undefined在数字转换后变为NaN
  13. -2

严格模式

use strict

变量声明和赋值

// 没有开启`use strict`的赋值
num=666;
console.log(a);
// 这样会输出666,没有报错
// 开启`use strict`
"use strict";
num = 666; // error: num is not defined

数据类型

number

1/0=Infinity

BigInt

console.log(9007199254740991 + 1); // 9007199254740992
console.log(9007199254740991 + 2); // 9007199254740992
//所以说,所有大于(2**53 -1)的奇数根本不能存储在"数字"类型中
const bigInt = 1234567890123456789012345678901234567890n;

null

特殊的

typeof Math // "object"  (1)

typeof null // "object"  (2)

JavaScript 中有 8 种基本数据类型。

七种原始数据类型:

还有一种非原始数据类型:

typeof运算符允许我们看到变量中存储的是哪种类型。

通常用作typeof x ,但typeof(x)也是可以的。 返回具有类型名称的字符串,如”string” 。 对于null返回”object” ——这是语言中的错误,它实际上不是一个对象。

条件分支

if ("0") {
  alert( 'Hello' );
}

逻辑运算符

&&||

alert( alert(1) || 2 || alert(3) );

空值合并运算符 ??

let x = 1 && 2 ?? 3; // Syntax error
let x = (1 && 2) ?? 3; // Works

Edit page
Share this post on:

Previous Post
筛选框的组件封装架构设计
Next Post
JavaScript中的异步编程详解