不理解以前的打包编译为什么要这么设计
这是一段webpack1打包后的代码:
var _index = __webpack_require__(3);// ...var render = (0, _index.compile)((0, _index4.getOuterHTML)(el));
我知道(a, b, c)
这个语句会返回最后一个元素
但是我不明白为何要采用(0, _index.function)()
的形式去调用引入的函数
而不是直接_index.function()
或许是有什么历史原因吗?
(0, _index.function)()
相当于:
const func = _index.functionfunc()
直接 _index.function()
调用时,function
中的 this
为 _index
。而通过 (0, _index.function)()
间接调用,相当于在全局作用域调用函数。在严格模式中,此时函数 function
的 this
为 undefined
。
const obj = { a: 2, func() { console.log(this, this?.a) }}obj.func(); // { a: 2 } 2(0, obj.func)() // undefined undefined
说明: 这实际上是一个诡计问题,因为这段代码不会编译!正如您在第1章中所记得的,浮点文字被假定为双倍,除非后缀有一个f,如2.1f。如果正确地将该值设置为2.1F,那么升级将与上一个示例类似,两个操作数都升级为double,结果将是一个double值。 但我不明白。如果浮动y=2.1;假设是双倍,则不需要将变量y提升到双倍。而我更困惑的是下一个问题,那就是:
在方法或类范围内,下面的行编译(带有警告): 在类作用域中,变量获取其默认值,以下给出未定义引用错误: 这难道不是第一个应该以相同的未定义引用错误结束吗?或者第二行应该编译?或者我错过了什么?
问题内容: 如果你给 它没有编译,但是带有花括号的相同代码是: 有什么解释? 问题答案: 基本上,变量声明只能在块中声明。 查看 Java语言规范中“语句”的语法 -它包括Block,但不包括LocalVariableDeclarationStatement- 后者是block语法的一部分。 这实际上是实用主义的问题:如果没有括号,则只能使用一个语句。如果没有后续语句,则声明变量是没有意义的,因为
奇怪的是,标记为“OK”的行编译得很好,但标记为“Error”的行失败了。它们看起来基本上是一样的。
我正在做我的节目。我正在使用Sublime文本和用于编译基本Windows CMD。我有一个文件夹,在这个文件夹中我有一个包,里面有每个文件(folde todolist)。在这个包中,我有一个类(Gui.java(packgae(folder)Gui\u pckg))。此类中的代码如下所示: 导入javax。摆动导入java。awt。; 公共类Gui{ } 而且它编译得很好。 但是,当我试图编译
问题内容: 这段代码使我凝视了几分钟: 我以前从未见过,而且我也不知道Java有一个“ loop”关键字(NetBeans甚至没有像关键字一样给它上色),并且它在JDK 6中可以很好地编译。 有什么解释? 问题答案: 这不是一个。 用法: