我刚开始从Lynda.com学习JavaScript,现在我正在研究有关功能的课程。
我对匿名功能感到困惑。当我在下面编写代码时,我的IDE显示了一些我不明白的警告。
var theBiggest = function(a,b) {
"use strict";
var result;
a>b ? result = ["a", a] : result = ["b", b];
console.log(result);
})(5/7,18/25)
console.log(theBiggest);
警告是:
1)。代码第6行缺少分号。
2)。预期分配或函数调用,而是看到一个 在第4行表达。
预期标识符,而不是在第6行看到')'。
本教程与我的代码相同,但我的代码不起作用。
答案 0 :(得分:3)
分号是&#34 ;;"结束陈述的字符。通常情况下,js并不真正关心你放了一个;在每个陈述的最后,但因为你使用严格模式,你有义务把它放在那里。
在第六行关闭} -bracket之后,我看到了一个关闭) - 但是它的开口括号无处可寻。你在这里做的是一个立即函数(函数定义和同时调用该函数)。通常在使用立即函数时,整个函数被()括号包围,以明确您实际调用函数而不将其赋值给变量(在本例中为theBiggest)
答案 1 :(得分:1)
你的结尾括号太多了
})(5/7,18/25)
^
除此之外,我建议使用ternay作为数组的赋值。
var theBiggest = function(a, b) {
"use strict";
var result = a > b ? ["a", a] : ["b", b];
console.log(result);
return result;
}(5 / 7, 18 / 25);
console.log(theBiggest);

答案 2 :(得分:1)
你在功能之前忘了打开括号:
var theBiggest = (function(a,b) {
"use strict";
var result;
a>b ? result = ["a", a] : result = ["b", b];
console.log(result);
})(5/7,18/25)
console.log(theBiggest);
答案 3 :(得分:1)
- 代码第6行缺少分号。
醇>
因为你需要在每个表达式(行)的末尾添加一个分号,后面跟着另一个表达式。因此(5/7,18/25)
应为(5/7,18/25);
。
- 预期分配或函数调用,而是在第4行看到一个表达式。
醇>
因为你不应该在三元运算符中使用赋值,事实上,你应该只使用返回值。
- 您有一个非必要的结束括号,您还需要返回结果。
醇>
var theBiggest = function(a,b) {
"use strict";
var result = a>b ? ["a", a] : ["b", b];
console.log(result);
return result;
}(5/7,18/25);
console.log(theBiggest);

答案 4 :(得分:0)
这些是我看到的:
需要将 result
指定为a>b ? ["a", a] : ["b", b]
您在函数末尾有一个额外的(
分号是需要在第6行添加的语句的结尾 - 在(5/7,18/25)
之后。
该函数需要返回result
var theBiggest = function(a,b) {
"use strict";
var result;
result = a>b ? ["a", a] : ["b", b];
console.log(result);
return result;
}(5/7,18/25);
console.log(theBiggest);