js (逻辑运算-冒泡捕获)遇到的问题浅谈

最近在看小程序在看文档的时候,遇到一些基础的js知识,翻找了资料之后记录下来,留待以后查看

事件冒泡与捕获

冒泡从底部往上,而捕获恰恰相反从上往下。

当终止时冒泡和捕获都取当前的`监听事件`《不知道咋形容,就是当前运行的,截止到这里为止》

栗子

capture-bind:捕获
bind:冒泡

<view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2">
    outer view
  <view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">
    inner view
  </view>
</view>
当我点击 inner view 时候,这个时候 顺序应该是
handleTap2
handleTap4
handleTap3
handleTap1
先捕获 2 4 然后 冒泡 3 1

| (按位或) 和 ^ (按位异或)

两者在一定程度上是相同的,都是有一个值为真值的时候,就返回`true`

MDN上进行了相应的描述,

按位或: 将任一数值 x 与 0 进行按位或操作,其结果都是 x。将任一数值 x 与 -1 进行按位或操作,其结果都为 -1。

按位异或:对每一对比特位执行异或(XOR)操作。当 a 和 b 不相同时,a XOR b 的结果为 1。

主要的是还是 ~按位非

有一个公式  -(x + 1)

栗子:

~1  等于 -(1+1)  return -2

~~ 1 等于 -(-(1+1) + 1)  return 1

~2  等于  -(2 + 1) return -3

~~2 等于  -(-(2+1) + 1) return 2

一般与 indexOf 配合使用 

var str = 'rawr';
var searchFor = 'a';

// 这是 if (-1*str.indexOf('a') <= 0) 条件判断的另一种方法
if (~str.indexOf(searchFor)) {
  // searchFor 包含在字符串中
} else {
  // searchFor 不包含在字符串中
}

找不到返回 -1 那么 -(-1 +1)  return -0  ;
-0 自动转换为 -1

或者取数值,把字符转换为数值,js中有隐式转换,在公式中 +1 * -1 那么该值就自动转换为number 

逻辑运算

与 &&  : 

expr1 && expr2   如果expr1返回false 那么返回expr1,否则返回 expr2

与布尔值一起使用时,如果两个操作数都为true&&返回true,否则返回false

需要注意的是:

a1=true && true       // t && t 结果为 true
a2=true && false      // t && f 结果为 false
a3=false && true      // f && t 结果为 false
a4=false && (3 == 4)  // f && f 结果为 false
a5="Cat" && "Dog"     // t && t 结果为 Dog  当两个值都为true的时候,取后面的值
a6=false && "Cat"     // f && t 结果为 false
a7="Cat" && false     // t && f 结果为 false
 

或 || :

expr1 || expr2  如果expr1 返回true那么就返回expr1 否则就返回expr2

与布尔值一起使用时,如果任意一个操作数为true||返回true

需要注意的是:跟上面且有个相反的取值

o1=true || true       // t || t 结果为 true
o2=false || true      // f || t 结果为 true
o3=true || false      // t || f 结果为 true
o4=false || (3 == 4)  // f || f 结果为 false
o5="Cat" || "Dog"     // t || t 结果为 Cat
o6=false || "Cat"     // f || t 结果为 Cat
o7="Cat" || false     // t || f 结果为 Cat

非 ! 逻辑非:

如果为true 返回false,false返回true

栗子:

n1 = !true  //   !t   结果为false

n2 = !false  //    !f   结果为true

n3 = !"Cat"  // !t  结果为 false

null;
NaN;
0;
空字符串("");
undefined

这些值都会返回false

 逗号操作符

mdn解释:对它的每个操作数求值(从左到右),并返回最后一个操作数的值

以前从来没有用过这种方式,来个栗子

var x = 0;
x ++,x
返回 1
在函数中如果要 return 的话那么就使用(x++,x),调用该函数还是会返回1

 感觉非常好用,省了几个代码

 

原文地址:https://www.cnblogs.com/damai/p/8385388.html