标签: var

在JavaScript中使用var重新定义局部变量

关于JavaScript和局部变量,我有一个相当普遍的问题.我的问题是以下内容之间有什么区别,如果有的话:

function bla
{
    var a = 2;   // local variable
    a = 3;       // the local variable a gets a new value

    // Would do the following line anything different 
    // (than simply asigning this value?)
    var a = 4;
}
Run Code Online (Sandbox Code Playgroud)

我想我不会得到两个名为a的局部变量.在其他语言中,这甚至是一个错误.那有什么用呢?

javascript var

10
推荐指数
1
解决办法
6557
查看次数

与全局'var'不同,javascript'let'全局变量不是'window'的属性

我过去常常检查是否var定义了全局:

if (window['myvar']==null) ...
Run Code Online (Sandbox Code Playgroud)

要么

if (window.myvar==null) ...
Run Code Online (Sandbox Code Playgroud)

它适用于 var myvar

现在我正在尝试切换到let,这不再起作用了.

var myvar='a';
console.log(window.myvar); // gives me a
let mylet='b';
console.log(window.mylet); // gives me undefined
Run Code Online (Sandbox Code Playgroud)

问题:一个全球性的let,没有任何的地方,如果有什么东西被像我可以定义我可以看看varwindow对象?

更普遍的:
var myvar='a'相当于window.myvar='a'
我听到人们说在全球范围内,let并且var/表现相同,但这不是我所看到的.

javascript var let

10
推荐指数
1
解决办法
7570
查看次数

为什么不能使用var而不是在ngFor中使用

根据我的知识,我们在javascript中使用varlet用于变量声明,唯一的区别是var得到了当前函数的let作用域,同时将作用域限定为当前块.所以如果我使用它var而不是let任何地方它应该工作.但是在下面的代码中......

<li *ngFor="let fruit of fruits">
   {{ fruit}}
</li>
Run Code Online (Sandbox Code Playgroud)

...如果我使用var它会给出错误.

<li *ngFor="var fruit of fruits">
   {{ fruit}}
</li>
Run Code Online (Sandbox Code Playgroud)

错误:未捕获(在承诺中):错误:模板分析错误:分析程序错误:ng:///AppModule/AppComponent.html@4:4中的[var fruit of fruits]中第1列的意外标记变量("

有人能告诉我为什么会这样吗?

javascript var let angular

10
推荐指数
1
解决办法
1278
查看次数

"use strict":为多个变量赋值

"use strict";javascript中还有其他方法可以将值初始化为多个变量吗?因为这样做:

var x = y = 14;
Run Code Online (Sandbox Code Playgroud)

会导致错误: Uncaught ReferenceError: y is not defined

在这里得到我的参考:

在Javascript中将多个变量设置为相同的值

javascript variables var

9
推荐指数
2
解决办法
1011
查看次数

'let和'var'在Typescript中是一样的吗?

我正在看一下AngularJS 2和Typescript,我决定用这个来学习一些打字稿的基础知识.通过许多研究,我找到了关于模块,Typescript的好主题,其中一个讨论了'let'和'var'命令来声明变量; 根据这个问题,下面的Typescript代码应该只显示一个警报并在控制台中抛出错误:

test.ts:

for(let i = 0; i < 1; i++) {
    alert(i);
}
alert(i);
Run Code Online (Sandbox Code Playgroud)

编译test.js:

for(var i = 0; i < 1; i++) {
    alert(i);
}
alert(i);
//# sourceMappingURL=test.js.map
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.编译器"忽略""let"命令并将其转换为"var"命令.为什么会这样?Typescript只适用于类吗?

我正在使用AngularJS配置'npm start',因此它会自动编译我的'test.ts'文件:

  "scripts": {
    "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",
    "lite": "lite-server",
    "postinstall": "typings install",
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "typings": "typings"
  },
Run Code Online (Sandbox Code Playgroud)

javascript var let typescript

9
推荐指数
1
解决办法
8455
查看次数

Swift - Lazy Var vs.以编程方式创建视图(保存内存)

我是初学者,我有点理解Lazy Var vs. Let.我注意到,当使用Lazy Var时,特别是使用ImageViews,可以节省大量的内存使用量.但是到目前为止我看过的教程和指南并没有经常使用Lazy Var,所以我很怀疑它是不好的做法而且我忽略了一些东西.

我做了一点研究,得知Lazy不是"线程安全",但我不明白这意味着什么.我已经看到了很多优点和缺点,但我无法得出任何结论,特别是因为我的知识非常有限.

什么时候(或更好)在创建UIView时使用Lazy Var vs. Let?

lazy var profileImageView: UIImageView = {

    let imageView = UIImageView(image: #imageLiteral(resourceName: "page1"))
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.contentMode = .scaleAspectFit
    return imageView

}()
Run Code Online (Sandbox Code Playgroud)

var let swift

9
推荐指数
3
解决办法
2772
查看次数

为什么不慢于var?

为了使一个极端的总结,之间的差异var,并let是一个范围之内他们的生活.

所以如果我们要从这个答案中得到这样的例子:

(function() {
  for (var i = 0; i < 5; i++) {
    setTimeout(function() {
      console.log(`i: ${i}`);
    }, i * 100);
  }
  // 5, 5, 5, 5, 5


  for (let j = 0; j < 5; j++) {
    setTimeout(function() {
      console.log(`j: ${j}`);
    }, 1000 + j * 100);
  }
  // 0, 1, 2, 3, 4
}());
Run Code Online (Sandbox Code Playgroud)

  • i(声明var)生活在整个function
  • j(声明着let)仅存在于for循环内.

对我来说,这意味着javascript,在每次迭代之后,除了声明和赋值给变量之外,let还需要执行额外的步骤:清理 …

javascript performance var let

9
推荐指数
1
解决办法
182
查看次数

var&lt;T&gt; 在 Java 中有什么作用?

我的一个朋友注意到了

var<Integer> list = new ArrayList<Double>();
Run Code Online (Sandbox Code Playgroud)

在 Java 中有效。事实证明, 的类型list被评估为ArrayList<Double>

使用时var<Integer> list = new ArrayList<>();list就是ArrayList<Object>

我们俩都无法弄清楚泛型类型的var作用,因为它似乎被忽略了。但如果是这样,为什么这首先在语法上是正确的?

java generics var ecj

9
推荐指数
2
解决办法
350
查看次数

JavaScript 检查字符串是否至少有三个字符在另一个变量中

我有一个变量activeUserName和一个变量manager1

如何检查是否activeUserName包含至少三个字符,在manager1?(这些字符的位置无关紧要)

例如在下面的例子中,它应该返回 true,因为字符 'J'、'o' 和 'e' 在里面manager1

var activeUserName = "JohnDoe100";
var manager1 = "JYZALoe999";
Run Code Online (Sandbox Code Playgroud)

现在我正在使用 indexOf 方法并且只查看某些位置的字符,这就是我想改变它的原因:

if (isEditor == false){
    if (((activeUserName.indexOf(manager1.charAt(0)) !== -1)  && (activeUserName.indexOf(manager1.charAt(2)) !== -1)) || (activeUserName.indexOf(manager1.charAt(4)) !== -1)){
        // doSth();
    } else if (((activeUserName.indexOf(manager2.charAt(0)) !== -1)  && (activeUserName.indexOf(manager2.charAt(2)) !== -1)) || (activeUserName.indexOf(manager2.charAt(4)) !== -1)){
        // doSth();
    } else {
        // doSth();
    }
}
Run Code Online (Sandbox Code Playgroud)

我读过 Regex,但我不确定这是否可以应用在这里。

任何帮助表示赞赏!

javascript string var character indexof

9
推荐指数
1
解决办法
1157
查看次数

无法理解 JS 中这个 for 循环的输出

我已经明白为什么这段代码的输出应该是3 3 3.

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
Run Code Online (Sandbox Code Playgroud)

但我无法理解为什么这段代码的输出是0 1 2.

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
Run Code Online (Sandbox Code Playgroud)

我希望第二个循环的输出更加清晰for

javascript for-loop var let settimeout

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