javascript – 为什么不使用!! MS AJAX中的布尔值?
作者:互联网
从MS AJAX源代码,
Type.isClass = function Type$isClass(type) {
/// <summary locid="M:J#Type.isClass" />
/// <param name="type" mayBeNull="true"></param>
/// <returns type="Boolean"></returns>
var e = Function._validateParams(arguments, [
{name: "type", mayBeNull: true}
]);
if (e) throw e;
if ((typeof(type) === 'undefined') || (type === null)) return false;
return !!type.__class;
}
请看最后一行代码,为什么用!!而不只是返回类型.__类?
谢谢!
解决方法:
作者不能认为类型.__ class保证是一个布尔值.因为您可以将任何对象传递给Type.isClass():
Type.isClass(3);
Type.isClass({});
Type.isClass(AnActualClassFunction);
…实际上并不能保证类型.__类会有一个布尔值.
当然,不是ASP.NET AJAX“类”的参数通常不具有__class属性 – 因此如果例程只返回类型.__类,则可能的返回值将为true,false和undefined.对于用于返回布尔值的例程,这是不合需要的.
!! type .__ class只保证返回一个布尔值(true或false)(undefined将转换为false).
标签:javascript,asp-net-ajax 来源: https://codeday.me/bug/20190726/1548453.html