编程语言
首页 > 编程语言> > javascript – 为什么不使用!! MS AJAX中的布尔值?

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