vue源码笔记之——运行时runtime

vue源码笔记之——运行时runtime_第1张图片

源码中的位运算

  1. 按位于 运算
if (shapeFlag & ShapeFlags.TELEPORT) {

解释:如果shapFlag本身值为8,type为1的话,那么转换为二进制(js都是32位)那就是
shapFlag:00000000 00000000 00000000 00001000
type: 00000000 00000000 00000000 00000001
结果为: 00000000 00000000 00000000 00000000
按位进行运算,如果两个都为为1那就是1,否则为0,所以结果为0
2. 按位或 赋值

vnode.shapeFlag |= type
// 和这个代码一样
vnode.shapeFlag = vnode.shapeFlag |type

解释:如果shapFlag本身值为8,type为1的话,那么转换为二进制(js都是32位)那就是
shapFlag:00000000 00000000 00000000 00001000
type: 00000000 00000000 00000000 00000001
结果为: 00000000 00000000 00000000 00001001
按位进行运算,如果有一个为1那就是1,所以结果为9

你可能感兴趣的:(vue,笔记)