Mis*_*ist 78 javascript number-literal spread-syntax
我刚刚{....0}在朋友的代码中找到了.在控制台返回中评估它{}(空对象).
这是为什么?JavaScript中4个点的含义是什么?
Nik*_*xDa 87
四个点实际上没有任何意义....是扩散运算符,.0是简称0.0.
因此,将0(或任何数字)传播到对象中会产生空对象{}.
Jon*_*lms 55
对象文字中的三个点是展开属性,例如:
const a = { b: 1, c: 1 };
const d = { ...a, e: 1 }; // { b: 1, c: 1, e: 1 }
Run Code Online (Sandbox Code Playgroud)
最后一个带0的点是一个数字文字.0是相同的0.0.因此:
{ ...(0.0) }
Run Code Online (Sandbox Code Playgroud)
将数字对象的所有属性传播到对象中,但是由于数字没有任何(自己的)属性,因此您将获得一个空对象.
简单来说{...},javascript中的spread运算符将一个对象/数组扩展为另一个.
因此,当babelifier尝试用另一个扩展时,它必须确定它是否正在尝试扩展数组或对象.
在这种情况下array,它迭代元素.
在这种情况下object,它迭代键.
在这种情况下,babelyfier试图number通过检查own property call缺少的Object 来提取密钥,number因此它返回空Object.