JavaScript 如何调用一个没有括号的函数
方法1:使用new 运算符
new 运算符用于创建一个具有构造函数的对象实例。这个构造函数可以用来编写我们自己的函数,然后通过new运算符进行调用。当使用这个运算符时,括号是可选的,因此即使没有括号,函数也会被调用。
语法:
new exampleFunction
示例:
<body>
<h1 style="color: green">
GeeksforGeeks
</h1>
<b>
How to invoke a function
without parentheses?
</b>
<p class="output"></p>
<script type="text/javascript">
function exampleFunction() {
document.querySelector(".output").textContent
= "The function was called!";
}
// Using the new operator
new exampleFunction;
</script>
</body>
输出:

方法2:使用标记的模板字面量
标记的模板字面量是在JavaScript ES6中引入的模板字面量的一个用例。它允许在使用模板字面量时直接使用函数。可以通过在字面量中传递参数来使用它。要调用一个函数,需要将函数名与反引号 ()一起写在一起,以表示它是标记的模板字面量。
语法:
exampleFunction``
示例:
<body>
<h1 style="color: green">
GeeksforGeeks
</h1>
<b>
How to invoke a function
without parentheses?
</b>
<p class="output"></p>
<script type="text/javascript">
function exampleFunction() {
document.querySelector(".output").textContent
= "The function was called!";
}
// Using tagged template literals
exampleFunction``;
</script>
</body>
输出:

方法3:修改toString()方法
toString()方法在需要进行字符串转换时被调用。可以创建一个对象,将toString()方法修改为调用所需的函数。可以通过与空字符串进行拼接来使用这个对象来调用toString()方法。这将强制调用toString()方法,进而调用指定的函数。
语法:
let tempObj = {
toString: exampleFunction
}
'' + tempObj;
示例:
<body>
<h1 style="color: green">
GeeksforGeeks
</h1>
<b>
How to invoke a function
without parentheses?
</b>
<p class="output"></p>
<script type="text/javascript">
function exampleFunction() {
document.querySelector(".output").textContent
= "The function was called!";
}
let tempObj = {
toString: exampleFunction
}
// Forcing the modified
// toString function to be invoked
'' + tempObj;
</script>
</body>
输出:

极客教程