gpt4 book ai didi

javascript - 处理 JavaScript 中未定义参数和空参数之间的区别

转载 作者:可可西里 更新时间:2023-11-01 01:33:13 24 4
gpt4 key购买 nike

我很清楚 null 和 undefined 在 JavaScript 中是不同的。但是,当我自己的函数作为参数之一传递时,我似乎无法决定是否使用该事实。

或者,换一种说法,myFoo(undefined) 应该返回与 myFoo(null) 相同的东西吗?

或者,在另一种情况下,因为 myBar(1, 2, 3)myBar(1, 2, 3, undefined, undefined)< 几乎)相同myBar(1, 2, 3, null, null) 应该返回与 myBar(1, 2, 3) 相同的东西吗?

我觉得这两种情况都可能造成混淆,并且库在处理 null/undefined 时可能应该遵循约定。

我并不是真的征求个人意见(所以请将这些表达为评论而不是答案)。我想问是否有人知道在处理这种区别时是否有应该坚持的最佳实践。非常欢迎引用外部资源!

最佳答案

我要说的是,虽然在大多数情况下,区分两者没有什么值(value),但存在值(value)的情况往往很有趣。

举个例子,一个可以被赋予回调的函数。 undefined 可能表示应该使用一些默认回调(就像没有指定参数一样),但是 null 可能表示根本不应该进行任何回调:

function asyncWorker(data, callback, timeout) {
if (typeof callback === "undefined") {
callback = function() { $("#log").append("<p>Done!</p>"); };
}

// ...

if (callback) callback();
}

asyncWorker([1, 2, 3]); // default callback, no timeout
asyncWorker([4, 5, 6], null); // no callback, no timeout
asyncWorker([7, 8, 9], undefined, 10000); // default callback, 10s timeout

当然,这里可以使用 false0 代替 null,但在更复杂的示例中情况可能并非如此.您的代码是否受益于额外的参数复杂性完全取决于您。 :-)

关于javascript - 处理 JavaScript 中未定义参数和空参数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959771/

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