Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JavaScript 的一点小技巧 #15

Open
yyzclyang opened this issue Aug 13, 2018 · 0 comments
Open

JavaScript 的一点小技巧 #15

yyzclyang opened this issue Aug 13, 2018 · 0 comments

Comments

@yyzclyang
Copy link
Owner

| 和 &

| (或)和 & (且)是用来进行布尔判断的。

a || b / a && b的值基本上不可能是true或者false,它们的值一般为falsy或者truthy

falsy值的个数是有限多个,分别为undefinednull0""NAN,再加上false

| 符号

当进行 | (或)运算时,只要有一个值为真,那么整个结果为真,其他情况为假。

a || b || c...

  • 如果结果为false,那么它的值为最后一个falsy

例: 0 || undefined || null || console.log('true')

它的结果为false,所以它的值为console.log('true')falsy值,虽然它是一句执行语句,但是它的值仍然为undefined

  • 如果结果为true,那么它的值为第一个truthy值,后面的代码不会执行

例: 0 || undefined || 1 || 2 || console.log('true')

当它执行到1时,计算的结果为true,所以后面的代码不会执行,整个式子的值为1

& 符号

当进行 & (且)运算时,只有全部值为真,那么整个结果才为真,其余为假。

a && b && c...

  • 如果为false,那么它的值为第一个falsy值,后面的代码不会执行

例: null && console.log('false') && 8 && 1

它的结果为false,当它执行到0时,得到了false,后续代码就不会执行了

  • 如果为true,那么它的值为最后一个truthy

例: 1 && 'a' && {} && []

它为true,所以它的值为最后一个truthy

利用 | (或)避免危险代码

比如var a = {},乍一看,这定义个变量好像没什么问题,但是其中包含了一个陷阱。那就是你不知道这个a变量是不是已经定义了,如果a变量在之前就已经定义使用了,那么这句代码就会重新定义a变量,极其容易产生错误。

那么在和他人合作完成代码,不清楚某个变量的是否被定义时,应该加一个判断:

if(a){ 
  a = a;
}else{
  var a = {};
}

//可以优化成

var a = a || {}
@yyzclyang yyzclyang changed the title 2018.07.02 JavaScript 的一点小技巧 JavaScript 的一点小技巧 Aug 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant