通过在默认值中分配虚假值来避免陷阱?

时间:2015-12-22 10:53:21

标签: javascript

无论如何我们可以处理||中的虚假值经过懒惰评估的运营商?

所以,例如,如果我们有:

function isOldEnough(age) {
   age = age || 18;
   return age;
}

isOldEnough(0) // returns 18 because 0 is falsy

在ES6中,您可以简单地将其声明为

function isOldEnough(age = 18) { ... }

我们可以在ES5中做些什么来避免这个问题吗?

1 个答案:

答案 0 :(得分:3)

类似的东西(如果我理解正确的话):

function isOldEnough(age) {
  var age = typeof age === "number" ? arguments[0] : 18;
  return age; 
}

isOldEnough(null) // returns 18
isOldEnough("") // returns 18
isOldEnough(undefined) // returns 18
isOldEnough(0) // returns 0

可以通过检查年龄是否等于或大于零等进一步改进