Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 大括号{}内的函数调用_Javascript_Function_Curly Braces_Function Invocation - Fatal编程技术网

Javascript 大括号{}内的函数调用

Javascript 大括号{}内的函数调用,javascript,function,curly-braces,function-invocation,Javascript,Function,Curly Braces,Function Invocation,我试图实现一个在线聊天使用的主要供应商之一。他们建议我嵌入如下代码: <script type="text/javascript"> function embedScriptInsideHTMLtags() { // responsible code } { embedScriptInsideHTMLtags(); } </script> 函数embeddeScriptInsideHtmlTags(){ //责任代码 } { Embed

我试图实现一个在线聊天使用的主要供应商之一。他们建议我嵌入如下代码:

<script type="text/javascript">
  function embedScriptInsideHTMLtags() {
    // responsible code
  }
  {
    embedScriptInsideHTMLtags();
  }
</script>

函数embeddeScriptInsideHtmlTags(){
//责任代码
}
{
EmbeddeScriptInsideHtmlTags();
}
我的问题是,上面和下面的区别是什么:

<script type="text/javascript">
  function embedScriptInsideHTMLtags() {
    // responsible code
  }  
  embedScriptInsideHTMLtags();
</script>

函数embeddeScriptInsideHtmlTags(){
//责任代码
}  
EmbeddeScriptInsideHtmlTags();

第一个示例是使用所谓的。在这种情况下,这两个例子没有区别。根据MDN链接:

使用var声明的变量或在非严格模式下由函数声明创建的变量不具有块作用域。在块中引入的变量的作用域是包含函数或脚本的,设置它们的效果将持续到块本身之外。换句话说,block语句不引入作用域

但在严格的模式下

用let和const声明的标识符不具有块作用域

在严格模式下,从ES2015开始,块内的函数范围限定为该块。在ES2015之前,在严格模式下禁止块级功能


您必须理解访问块外的var与访问块外的let和const之间的区别一个是可能的(var),另一个是不可能的

您的代码没有任何区别,但是

<script>
  function embedScriptInsideHTMLtags() {
    // responsible code
    return 'something';
  }
  {
    const b=embedScriptInsideHTMLtags();
  }
  const c= embedScriptInsideHTMLtags();
</script>

函数embeddeScriptInsideHtmlTags(){
//责任代码
返回“某物”;
}
{
常量b=EmbeddeScriptInsidehTMLTAGS();
}
常量c=embedScriptInsideHTMLtags();

在这里,您可以从外部或其他脚本访问c,但无法访问b。在您的情况下,如果您只是调用一个函数,那么它没有任何区别

其他人已经回答了您的具体问题,但我还想指出,W3C现在建议您从JS
标记中省略type属性,并且自HTML5规范多年前问世以来就一直如此。该规范鼓励开发人员不要像
text/javascript
那样在标记中使用冗余的MIME类型。当您使用包含JavaScript代码的脚本标记时,您只需编写
,而无需任何属性。你可以从报纸上读到


类似地,当为样式表使用
标记时(使用
rel=“stylesheet
),您不再需要使用
type=“text/css>“
。由于CSS是web上唯一可用的样式表类型,因此样式表的type属性现在是多余的。您可以从中了解更多信息。

没有什么。谢谢您,我相应地更改了答案。