mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-09 15:34:05 +08:00
78 lines
4.2 KiB
HTML
78 lines
4.2 KiB
HTML
<article id="wikiArticle">
|
||
<div></div>
|
||
<h2 id="错误提示">错误提示</h2>
|
||
<pre><code class="language-javascript">SyntaxError: function statement requires a name [Firefox]
|
||
SyntaxError: Unexpected token ( [Chrome]
|
||
</code></pre>
|
||
<h2 id="错误类型">错误类型</h2>
|
||
<p><a href="Reference/Global_Objects/SyntaxError" title="SyntaxError 对象代表尝试解析语法上不合法的代码的错误。"><code>SyntaxError</code></a></p>
|
||
<h2 id="哪里出错了?">哪里出错了?</h2>
|
||
<p><a href="/en-US/docs/Web/JavaScript/Reference/Statements/function">函数声明</a>需要提供函数名称。你需要检查函数是如何定义的,是否需要为其提供名称,出现问题的函数是否需要声明为函数表达式或立即调用函数表达式(<a class="glossaryLink" href="/en-US/docs/Glossary/IIFE" title="IIFE: An IIFE (Immediately Invoked Function Expression) is a JavaScript function that runs as soon as it is defined.">IIFE</a>),以及函数在上下文环境中出现的位置是否正确。</p>
|
||
<h2 id="示例">示例</h2>
|
||
<h3 id="语句与表达式">语句与表达式</h3>
|
||
<p><a href="/en-US/docs/Web/JavaScript/Reference/Statements/function">函数语句</a>(或函数声明)需要命名,以下写法是不正确的:</p>
|
||
<pre><code class="language-js example-bad">function () {
|
||
return 'Hello world';
|
||
}
|
||
// SyntaxError: function statement requires a name
|
||
</code></pre>
|
||
<p>你可以使用<a href="/en-US/docs/Web/JavaScript/Reference/Operators/function">函数表达式</a>(赋值)来代替:</p>
|
||
<pre><code class="language-js example-good">var greet = function() {
|
||
return 'Hello world';
|
||
};</code></pre>
|
||
<p>者是你想将其作为立即调用函数表达式(<a class="external" href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression" rel="noopener">IIFE</a>,Immediately Invoked Function Expression),也就是定义后立即执行的函数。在这种情况下你需要用到更多的括号:</p>
|
||
<pre><code class="language-js example-good">(function () {
|
||
|
||
})();</code></pre>
|
||
<h3 id="标号函数(Labeled_functions)">标号函数(Labeled functions)</h3>
|
||
<p>你使用函数标号(<a href="/en-US/docs/Web/JavaScript/Reference/Statements/label">labels)</a>的时候, 也需要在关键词 <code>function</code> 后面提供一个函数名称. 这样的代码是不能运行的:</p>
|
||
<pre><code class="language-js example-bad">function Greeter() {
|
||
german: function () {
|
||
return "Moin";
|
||
}
|
||
}
|
||
// SyntaxError: function statement requires a name
|
||
</code></pre>
|
||
<p>这个例子可以正常运行:</p>
|
||
<pre><code class="language-js example-good">function Greeter() {
|
||
german: function g() {
|
||
return "Moin";
|
||
}
|
||
}</code></pre>
|
||
<h3 id="对象方法">对象方法</h3>
|
||
<p>如果你想创建创建一个对象方法,那么需要首先创建一个对象。以下语法(function 关键字后面没有提供名称)是合法的:</p>
|
||
<pre><code class="language-js example-good">var greeter = {
|
||
german: function () {
|
||
return "Moin";
|
||
}
|
||
};</code></pre>
|
||
<h3 id="回调函数的语法">回调函数的语法</h3>
|
||
<p>另外,如果使用到了回调函数,那么检查一下语法是否正确。大括号与逗号很容易使情况变糟。</p>
|
||
<pre><code class="language-js example-bad">promise.then(
|
||
function() {
|
||
console.log("success");
|
||
});
|
||
function() {
|
||
console.log("error");
|
||
}
|
||
// SyntaxError: function statement requires a name
|
||
</code></pre>
|
||
<p>正确的形式应该是这样的:</p>
|
||
<pre><code class="language-json example-good">promise.then(
|
||
function() {
|
||
console.log("success");
|
||
},
|
||
function() {
|
||
console.log("error");
|
||
}
|
||
);
|
||
</code></pre>
|
||
<h2 id="相关内容">相关内容</h2>
|
||
<ul>
|
||
<li><a href="/en-US/docs/Web/JavaScript/Guide/Functions">Functions in the JavaScript Guide</a></li>
|
||
<li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/function">function statement</a></li>
|
||
<li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/function">function expression</a></li>
|
||
<li><a class="external" href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression" rel="noopener">IIFE</a></li>
|
||
<li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/label">label</a></li>
|
||
</ul>
|
||
</article> |