mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 11:48:10 +00:00
LibJS: Handle empty strings and arrays in Value::to_number()
- An empty string is converted to 0 - An empty array is converted to 0 - An array with one item is converted to that item's numeric value - An array with more than one item is converted to NaN
This commit is contained in:
parent
2d3634d5f5
commit
bad0556a59
2 changed files with 12 additions and 14 deletions
|
@ -27,7 +27,6 @@
|
|||
#include <AK/FlyString.h>
|
||||
#include <AK/Function.h>
|
||||
#include <LibJS/Interpreter.h>
|
||||
#include <LibJS/Runtime/Array.h>
|
||||
#include <LibJS/Runtime/MathObject.h>
|
||||
|
||||
namespace JS {
|
||||
|
@ -47,18 +46,7 @@ Value MathObject::abs(Interpreter& interpreter)
|
|||
if (interpreter.call_frame().arguments.is_empty())
|
||||
return js_nan();
|
||||
|
||||
auto argument = interpreter.call_frame().arguments[0];
|
||||
|
||||
if (argument.is_array()) {
|
||||
auto& array = *static_cast<const Array*>(argument.as_object());
|
||||
if (array.length() == 0)
|
||||
return Value(0);
|
||||
if (array.length() > 1)
|
||||
return js_nan();
|
||||
argument = array.elements()[0];
|
||||
}
|
||||
|
||||
auto number = argument.to_number();
|
||||
auto number = interpreter.call_frame().arguments[0].to_number();
|
||||
if (number.is_nan())
|
||||
return js_nan();
|
||||
return Value(number.as_double() >= 0 ? number.as_double() : -number.as_double());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue