gpt4 book ai didi

javascript - `Object(value)` 和 `value || {}` 哪个效率更高

转载 作者:行者123 更新时间:2023-11-28 13:32:21 27 4
gpt4 key购买 nike

我想确保某些特定变量始终是对象(我知道aValue可以是对象 >未定义null)。我有以下选择:

var mustBeObject = aValue || {};

var mustBeObject = Object(aValue);

这两者哪个更有效,为什么?

最佳答案

如果你想保证 mustBeObject 是一个对象,无论 aValue 是什么,但如果 aValue 是一个对象,那么你想要要使用 aValue 的值,那么您将需要更多代码:

var mustBeObject = (aValue && typeof aValue === "object") ? aValue : {};

或者,如果您想确保 aValue 不是数组或其他类型的非 JS 对象,您需要进一步测试以确保 aValue 是你想要它是什么:

// make sure it's an object and not an array and not a DOM object
function isPlainObject(item) {
return (
!!item &&
typeof item === "object" &&
Object.prototype.toString.call(item) === "[object Object]" &&
!item.nodeType
);
}

var mustBeObject = isPlainObject(aValue) ? aValue : {};
<小时/>

编写这些代码是为了确保 mustBeObject 是一个 JS 对象,无论 aValue 最初是什么。如果您从代码中知道 aValue 只是 undefined 或有效对象,那么您的第一个选择:

var mustBeObject = aValue || {};

肯定会比我上面的任何选项都要快,但是你的选项只能防止aValue中的错误值,而不是其他类型的非JS对象的非错误值,所以既然你说你需要“确保某些特定变量始终是一个对象”,我认为你需要更多的测试,而不仅仅是你所拥有的。

<小时/>

一个jsperf test显示 OR 版本更快。感谢@Wander Nauta

关于javascript - `Object(value)` 和 `value || {}` 哪个效率更高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23973367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com