ECMAScript 6介绍了该let
声明.我听说它被描述为"本地"变量,但我仍然不太确定它与var
关键字的行为有何不同.
有什么区别?何时应该let
使用var
?
javascript中的变量范围是什么?它们的内部是否与函数外部相同?或者甚至重要吗?另外,如果变量是全局定义的,那么它们存储在哪里?
在与同事讨论了在C#3中使用'var'关键字后,我想知道人们对通过var的类型推断的适当用途有什么看法?
例如,我在可疑情况下懒得使用var,例如: -
foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.
Run Code Online (Sandbox Code Playgroud)
var的更合理用途如下: -
var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.
Run Code Online (Sandbox Code Playgroud)
有趣的是LINQ似乎有点灰色,例如: -
var results = from r in dataContext.SomeTable
select r; // Not *entirely clear* what results will be …
Run Code Online (Sandbox Code Playgroud) 因此,在PHPDoc中,可以@var
在成员变量声明之上指定提示其类型.然后是一个IDE,例如.PHPEd将知道它正在使用什么类型的对象,并且能够为该变量提供代码洞察.
<?php
class Test
{
/** @var SomeObj */
private $someObjInstance;
}
?>
Run Code Online (Sandbox Code Playgroud)
这很有效,直到我需要对一个对象数组做同样的事情,以便在稍后迭代这些对象时能够获得正确的提示.
那么,有没有办法声明一个PHPDoc标记来指定成员变量是一个SomeObj
s 数组?@var
例如,数组是不够的,@var array(SomeObj)
似乎没有效果.
之前我问了一个问题,为什么我看到这么多的例子都使用了这个var
关键字并得到了答案,虽然它只是匿名类型所必需的,但它仍然被用来使编写代码"更快"/更容易和"只是因为".
在这个链接("C#3.0 - Var不是Objec")之后,我看到它var
被编译成IL中的正确类型(你会在中间的文章中看到它).
我的问题是IL代码使用var
关键字take 会有多少(如果有的话),如果在任何地方使用它,它是否会接近于对代码性能有可衡量的水平?
我刚刚开始在Visual Studio中使用ReSharper(在关于SO的许多建议之后).为了试一试,我打开了一个最近的ASP.NET MVC项目.我注意到它提出的第一个也是最常见的事情之一是将大多数/所有我的显式声明var
改为.例如:
//From This:
MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
//To This:
var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
Run Code Online (Sandbox Code Playgroud)
等,即使采用简单的类型,如int
,bool
等
为什么要推荐这个?我不是来自计算机科学或.NET背景,最近"陷入".NET开发,所以我真的很想了解正在发生的事情以及它是否有益.
可能重复:
ReSharper和var
在我安装了ReSharper后,它要求(通过警告)我尽可能使用var,例如
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
Run Code Online (Sandbox Code Playgroud)
ReSharper想把它变成
var ue = (UnhandledExceptionEventArgs) t;
Run Code Online (Sandbox Code Playgroud)
我更喜欢第一个版本,有没有理由更喜欢var?更好的性能?什么?或者它只是一种代码风格?
是否存在与C#var
关键字等效的VB.NET ?
我想用它来检索LINQ查询的结果.
我是Clojure的新手,你能不能给我解释现实场景.我的意思是,在哪里使用Ref,Var,Agent,Atom.我读过书,但是,仍然无法理解现实世界的例子.