diff --git a/Libraries/LibJS/Runtime/Value.cpp b/Libraries/LibJS/Runtime/Value.cpp index 78c42dee5d..8607423873 100644 --- a/Libraries/LibJS/Runtime/Value.cpp +++ b/Libraries/LibJS/Runtime/Value.cpp @@ -165,8 +165,7 @@ Value Value::to_number() const case Type::Number: return Value(m_value.as_double); case Type::String: { - // FIXME: Trim whitespace beforehand - auto& string = as_string().string(); + auto string = as_string().string().trim_whitespace(); if (string.is_empty()) return Value(0); if (string == "Infinity" || string == "+Infinity") diff --git a/Libraries/LibJS/Tests/to-number-basic.js b/Libraries/LibJS/Tests/to-number-basic.js index 9a447fae32..f4659bea0d 100644 --- a/Libraries/LibJS/Tests/to-number-basic.js +++ b/Libraries/LibJS/Tests/to-number-basic.js @@ -35,6 +35,9 @@ try { assert(-"Infinity" === -Infinity); assert(-"+Infinity" === -Infinity); assert(-"-Infinity" === Infinity); + assert(+" \r \t \n " === 0); + assert(+" \n \t Infinity \r " === Infinity); + assert(+"\r \n1.23 \t\t\t \n" === 1.23); assert(isNaN(+undefined)); assert(isNaN(-undefined));