JS常见易错点


字数:309 阅读时长:1分钟 阅读:85

Javascript是一门弱类型语言,很灵活,学习门槛低,容易上手。但同时也容易出现误区,遇到很多坑。本篇就专门用来记录日常开发中的易错点。

Javascript

一、参数为引用类型的函数

  • eg:
1
2
3
4
5
6
7
8
9
10
11
12
13
let object = { a: 0 }; 
function fun(obj) {
obj.a = 1;
obj = { a: 2 };
obj.b = 2;
}
fun(object);
console.log(object);
// 对于这个输出结果估计很多人都容易出错
// 你想的结果:
{ a: 2, b: 2 }
// 实际的结果:
{ a: 1 }

解析:

  1. obj.a = 1 引用类型可直接修改新增属性值
  2. obj = { a: 2 } 改变了引用类型指向
  3. obj.b = 2 新的obj属性值改变 和 原object 无关

二、== 和 === 的区别

  1. 基础类型会做隐式转换再进行比较。
1
2
3
4
5
6
7
8
9
10
11
12
NaN == NaN          // false
null == null // true
null == undefined // true
null == 0 // false
null == false // false
undefined == 0 // false
undefined == false // false
0 == '0' // true

NaN === NaN // false
null === undefined // false
0 === '0' // false
  1. 引用类型会调用 valueOf 或者 toString 方法再进行比较,valueOf 优先于 toString。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var o = {}
var a = o
var b = o
a == b // true

var c = {}
var d = {}
c == d // false
c.valueOf() == d.valueOf() // false
c.toString() == d.toString() // true

var d1 = new Date('2022-01-01')
var d2 = new Date('2022-01-01')
d1 == d2 // false

欢迎访问:个人博客地址

本文作者: Tiven
发布时间: 2020-09-18
最后更新: 2022-02-11
本文标题: JS常见易错点
本文链接: https://www.tiven.cn/p/a8974376/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
欢迎留言,提问 ^_^