diff --git a/Libraries/LibJS/Runtime/GlobalObject.cpp b/Libraries/LibJS/Runtime/GlobalObject.cpp index 770ccddd65..c1a344df30 100644 --- a/Libraries/LibJS/Runtime/GlobalObject.cpp +++ b/Libraries/LibJS/Runtime/GlobalObject.cpp @@ -18,6 +18,11 @@ GlobalObject::GlobalObject() this_object->heap().collect_garbage(); return js_undefined(); }); + put_native_function("isNaN", [](Object*, Vector arguments) -> Value { + if (arguments.size() < 1) + return js_undefined(); + return Value(arguments[0].is_nan()); + }); put("Math", heap().allocate()); } diff --git a/Libraries/LibJS/Tests/NaN-basic.js b/Libraries/LibJS/Tests/NaN-basic.js index 1f849beefe..94f271d35e 100644 --- a/Libraries/LibJS/Tests/NaN-basic.js +++ b/Libraries/LibJS/Tests/NaN-basic.js @@ -3,6 +3,10 @@ function assert(x) { if (!x) throw 1; } try { var nan = undefined + 1; assert(nan + "" == "NaN"); + assert(isNaN(nan) === true); + assert(isNaN(0) === false); + assert(isNaN(undefined) === false); + assert(isNaN(null) === false); console.log("PASS"); } catch (e) { console.log("FAIL: " + e);