相关疑难解决方法(0)

JavaScript的自动分号插入(ASI)有哪些规则?

好吧,首先我应该问一下这是否依赖于浏览器.

我已经读过,如果找到一个无效的令牌,但代码段在该无效令牌之前有效,则在令牌之前插入分号(如果前面有换行符).

但是,由分号插入引起的错误引用的常见示例是:

return
  _a+b;
Run Code Online (Sandbox Code Playgroud)

..它似乎不遵循这个规则,因为_a将是一个有效的标记.

另一方面,分解调用链按预期工作:

$('#myButton')
  .click(function(){alert("Hello!")});
Run Code Online (Sandbox Code Playgroud)

有没有人对规则有更深入的描述?

javascript automatic-semicolon-insertion

400
推荐指数
5
解决办法
15万
查看次数

为什么结果因大括号放置而异?

为什么从本文中获取的代码片段会产生不同的结果,因为花括号的位置只有一个变化?

当开始大括号{在新行上时,test()返回undefined,并且警报中显示"no - it broke:undefined".

function test()
{
  return
  { /* <--- curly brace on new line */
    javascript: "fantastic"
  };
}

var r = test();
try {
  alert(r.javascript); // does this work...?
} catch (e) {
  alert('no - it broke: ' + typeof r);
}
Run Code Online (Sandbox Code Playgroud)

当括号与同一行时return,test()返回一个对象,并提醒"神奇".

function test()
{
  return { /* <---- curly brace on same line */
    javascript: "fantastic"
  };
}

var r = test(); …
Run Code Online (Sandbox Code Playgroud)

javascript syntax

99
推荐指数
3
解决办法
2万
查看次数

为什么有些行在C#中没有分号?

我只是想弄清楚为什么在下面的一些行不以分号结束但其他行做的技术原因 - 它是什么关于C#在某些行中预期的分号呢?

事实上,在写这篇文章时,我注意到必须带有大括号{}的语句不需要分号,但是自己的"Console.WriteLine"中的行确实需要它.

真的试图找到这个的技术原因......

即:

namespace checkPackage     **//no semicolon**
{
    class Program      **//no semicolon**
    {
        static void Main(string[] args)     **//no semicolon**
        {
            listFilesInDirectory(@"C:\Temp\");    **//NEEDS a semicolon**
        }

        static void listFilesInDirectory(string workingDirectory)   **//no semicolon**
        {
            string[] filePaths = Directory.GetFiles(workingDirectory);  **//NEEDS a semicolon**

            foreach (string filePath in filePaths)   **//no semicolon**
            {
                Console.WriteLine(filePath);  **//NEEDS a semicolon**
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

23
推荐指数
3
解决办法
3983
查看次数

require.js模块无法正确加载

我有我的bootstrap文件,它定义了require.js路径,并加载了app和config模块.

// Filename: bootstrap

// Require.js allows us to configure shortcut alias
// There usage will become more apparent futher along in the tutorial.
require.config({
    paths: {
        bfwd: 'com/bfwd',
        plugins: 'jquery/plugins',
        ui: 'jquery/ui',
        jquery: 'jquery/jquery.min',
        'jquery-ui': 'jquery/jquery-ui.min',
        backbone: 'core/backbone.min',
        underscore: 'core/underscore.min'
    }
});
console.log('loading bootstrap');
require([
    // Load our app module and pass it to our definition function
    'app',
    'config'
], function(App){
    // The "app" dependency is passed in as "App"
    // Again, the other dependencies passed in are not …
Run Code Online (Sandbox Code Playgroud)

javascript requirejs

10
推荐指数
3
解决办法
2万
查看次数

为什么JavaScript设计为在返回后跟一个新行自动插入分号?

我遇到了一个我遇到的问题:

return
    isSomething() &&
    isSomethingElse();
Run Code Online (Sandbox Code Playgroud)

这是行不通的,因为javascript在返回后插入分号,使得上面的等价于:

return;
isSomething() && isSomethingElse();
Run Code Online (Sandbox Code Playgroud)

这完全让我感到困惑,为什么会这样做.我发现了一些关于该主题的StackOverflow问题(例如this,thisthis),但他们只是解释了"何时"这样做,参考规范.

我甚至无法想象我想要一个return;声明后跟一些其他有效的javascript语句的情况(除非你使用goto或者我可能没有听说过其他一些模糊的javascript).在我看来,这只会导致问题.

我想知道为什么会这样做.为什么这部分规范?

编辑:关于重复的结束.我想,我明确表示,我读其他的问题和答案,指出它是JavaScript的规范的一部分,甚至把区别于其他人在我的问题的一部分大胆.在密切原因中链接的问题包含对这个问题的答案,并且与我在回答我的问题时所链接的其他三个问题的形式完全相同.

javascript syntax

5
推荐指数
1
解决办法
345
查看次数

为什么返回类型相同但结果不同

我在java脚本中有两个相同返回类型的函数但返回类型不同.下面使用snipped id的代码

function foo1()
    {
      return {
          bar: "hello"
      };
    }

    function foo2()
    {
      return
      {
          bar: "hello"
      };
    }
Run Code Online (Sandbox Code Playgroud)

调用函数..

console.log("foo1 returns:");
console.log(foo1());
console.log("foo2 returns:");
console.log(foo2());
Run Code Online (Sandbox Code Playgroud)

输出结果....

foo1 returns:
Object {bar: "hello"}
foo2 returns:
undefined 
Run Code Online (Sandbox Code Playgroud)

javascript console console.log

5
推荐指数
2
解决办法
933
查看次数

函数"chaining"与&&运算符返回undefined

我有这些功能:

function A1()
{
    return B() && C();
}

function A2()
{
    return
        B() && 
        C();
}

function B()
{
    return true;
}

function C()
{
    return true;
}
Run Code Online (Sandbox Code Playgroud)

调用A1返回true,但A2返回undefined.A1和A2之间的唯一区别是空白区域.到底是怎么回事?在我的实际代码中,我不想将我的A1函数编写为单行,因为它会很长并且不易读.

javascript internet-explorer-8

3
推荐指数
1
解决办法
513
查看次数

Javascript代码段解释

我在网上看到了这个技巧问题,没有任何答案或描述.不确定这里发生了什么:

function identity() {
    var name = 'Jack';
    alert(name);
    return
    name
};
var who = identity();
alert(who)
Run Code Online (Sandbox Code Playgroud)

这个剪切输出,杰克然后未定义,为什么?

javascript

0
推荐指数
1
解决办法
177
查看次数