var multiply = function (a, b) {
//An internal comment
return a * b;
};
var stupid = "function (a, b) {
return a * b;
}"
expect(multiply.toString()).toBe(stupid);
测试通过,但是firefox给了我这个:
unterminated string literal
[Break On This Error] var stupid = "function (a, b) {
更改代码以使用\
行终止符会阻止测试通过。
Expected 'function (a, b) {
return a * b;
}' to be 'function (a, b) {return a * b;}'.
如果您转义多行字符串文字,则测试失败。
使用换行符,测试仍未通过:
var stupid = "function (a, b) {\n
return a * b;\n
}"
expect(multiply.toString()).toBe(stupid);
答案 0 :(得分:2)
没有反斜杠,这是一个语法错误。有关in this HTML transcription的字符串文字the spec的更多信息。
有了它们,请记住后续行中的所有前导空格都包含在字符串中。
另外:您的expect
电话不可靠。首先,Function#toString
从未在任何地方标准化(当然不是ECMAScript标准)。其次,它在不同引擎上的工作方式不同(有些会包含注释,有些则不包含;有些会重新格式化代码[例如,function
之后可能没有空格],其他则不会;等等。 )。
答案 1 :(得分:1)
你的考试没有通过;它给出了语法错误。
Javascript不支持(未转义)多行字符串文字。
对于\
转义,它没有通过,因为你的字符串没有换行符。
Javsacript来源
"1\
2"
评估为"12"
。转义的换行符被忽略;它们不会成为换行符。
您需要添加\n
个字符。
答案 2 :(得分:1)
你必须使用
var stupid = "function (a, b) {" +
+ "return a * b;" +
+ "}";
因为javascript不支持多行字符串文字,因为SLaks指出