![](/img/trans.png)
[英]Closure compiler added '--' to my Javascript function. What does it mean?
[英]What does it mean to spread a function. Are normal functions iterable in javascript
我在控制台中執行類似下面的代碼
function add(a,b){return a+b;};
const obj = {...add};
令我驚訝的是它沒有拋出錯誤。 也沒有
const obj = {...123};
擴展語法應該只適用於可迭代的實體,如對象,數組,字符串,映射,集合等。那么為什么在使用不可迭代的實體時它不會拋出錯誤? 或者我在這里遺漏了什么?
JavaScript中的函數也是objects
。 它有自己的屬性,如name
, call
, apply
等。
執行const obj = {...add}
只獲取function object
的可枚舉屬性,將它們放入另一個對象並分配給obj
。 你可以通過檢查
function add(a,b){return a+b;}; add.test = 1; const obj = {...add}; console.log('test' in obj);
如何將123
轉換為Number
包裝器,其余部分相同
const obj = {...123}; console.log('valueOf' in obj);
你擁有的是一個擴展語法...
用於對象文字(在所有用戶代理中都不支持)。
傳播對象文字
ECMAScript提議的Rest / Spread屬性 (階段4)將擴展屬性添加到對象文字 。 它將自己的可枚舉屬性從提供的對象復制到新對象上。
function add(a, b) { return a + b; } const obj = { ...add }; console.log(obj); // no properties because no own enumerable properties
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.