0

不知道为什么我无法找到有关此语法的更多信息,但它是这样的......

var str = "Hello", length = str.length;
console.log(length); //5

让我进入我正在做的事情,以便答案是相关的。我可以继续这样分配...

var str = "Hello", length = str.length, lengthtwo = str.length*2;
console.log(length); //5
console.log(lengthtwo); //10

*下一个测试结果不准确,记录在以前的全局上。但我会继续让其他人看到。

(function() {var str = "Hello", length = str.length, lengthtwo = str.length*2;})();
console.log(length); //5
console.log(lengthtwo); //10

它看起来正在创建一个全局变量,但您不能创建一个本地变量。

另外,我知道你可以做...

var foo = 1,
    bar = 2;

这将创建两个局部范围变量,因为 var 也被传递给 bar。因此,如果我在这个上使用类似的范围测试,我会得到没有定义,这与之前的测试不同。

更新:菜鸟错误!毕竟这和 foo 和 bar 完全一样,但是我访问的是我在之前的测试中声明的全局变量。所以这里没有魔法。

4

2 回答 2

2

在 var lengthtwo 声明之前放置一个分号。你有一个逗号。所以:

var str ="Hello", len = str.length; 
or
var str="hello"; var len=str.length;
于 2013-09-07T21:03:20.653 回答
1

格式化可能会有所帮助。如果我们展开给出错误的行,我们会看到:

(function() {
   var str = "Hello", 
       length = str.length, 
       var lengthtwo = str.length*2;
 })();

var中间那个多余的就是问题所在。

您可以删除它:

(function() {
   var str = "Hello", 
       length = str.length, 
       lengthtwo = str.length*2;
 })();

或将其拆分为自己的声明:

(function() {
   var str = "Hello", 
       length = str.length;
   var lengthtwo = str.length*2;
 })();
于 2013-09-07T21:03:36.257 回答