我想知道为什么我的程序输出I4 output\ I3 outputxef\xbc\x9f
var a = 4;\nvar i = 0;\nvar i3 = function() {\n console.log("I3 output")\n return i = i + 3\n}\nvar i4 = function() {\n console.log("I4 output")\n return i = 4\n}\n\n(a > 3) && i3() || (a < 5) && i4();\nconsole.log(i)Run Code Online (Sandbox Code Playgroud)\r\n我想要I3 output那时I4 output。为什么这不起作用?
这是因为你少了一个分号。
这 :
var i4 = function() {
console.log("I4 output")
return i = 4
}
(a > 3)
Run Code Online (Sandbox Code Playgroud)
是这样执行的:
var i4 = function() {
console.log("I4 output")
return i = 4
}(a > 3) // <--- You are executing i4, passing it "a > 3" as argument
Run Code Online (Sandbox Code Playgroud)
旁注:Javascript 允许你这样做,但会导致错误;但 Typescript 抱怨道。它说你正在调用一个带有 1 个参数的函数,而它期望的是 0。Typescript 确实是对 JS 的一些改进,并且教会了我很多关于它的知识。
如果添加分号,则函数被定义,但不被执行:
var i4 = function() {
console.log("I4 output")
return i = 4
}
(a > 3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |