无论如何,var是否可以为可空类型?
这隐式地将i类型化为int,但是如果我想要一个可以为空的int呢?
var i = 0;
为什么不支持这个:
var? i = 0;
我是一个困惑的新手.我在教程中读到你创建一个像这样的javascript对象:
function myObject() {
this.myProperty = "a string";
this.myMethod = function () {
//Method code
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在其他地方读到你创建一个像这样的对象:
var myObject = {
myProperty: "a string",
myMethod : function () {
//Method code
}
}
Run Code Online (Sandbox Code Playgroud)
两者之间的(非主观)差异是什么?是否有正式的正确方式和错误的方式?
我需要我的脚本在第一次单击元素时执行某些操作,并在单击2,3,4等时继续执行不同的操作
$('selector').click(function() {
//I would realy like this variable to be updated
var click = 0;
if (click === 0) {
do this
var click = 1;
} else {
do this
}
});//end click
Run Code Online (Sandbox Code Playgroud)
我认为它应该依赖于变量,但我想不出如何从这里更新变量,任何帮助都会很棒.
随着dynamic类型的开始和.NET 4中的DLR,我现在有3个选项来声明我称之为"开放"类型:
var,局部隐式类型强调"什么"而不是"如何",object,别名System.Object和dynamic,禁用编译器检查,在运行时添加方法/属性虽然那里有很多关于这些的文章,但我发现的并没有把它们放在一起,我不得不承认,它仍然有点模糊.
添加到这个LINQ,lambda表达式,匿名类型,反射......它变得更加不稳定.
我想看一些例子,也许是对比优势/劣势,帮助我巩固对这些概念的把握,并帮助我理解何时,何地以及如何在它们之间进行选择.
谢谢!
出于好奇的好奇心,为什么javascript会接受
var z = z || [];
Run Code Online (Sandbox Code Playgroud)
初始化z(因为z可能最初定义)
但没有var,它会抛出一个错误(在全球空间)
z = z || [];
Run Code Online (Sandbox Code Playgroud)
(如果z先前未定义)
在全球空间中,您不需要使用VAR,但我得到它可能是不好的做法.
在你说这是一个重复的问题之前
注意声明"如果你在全球范围内那么没有区别."
显然,根据我的工作实例,这并非100%正确.
这是一个怪癖还是有合法的逻辑?
在我学会的时候添加答案摘要:
感谢蒂姆(见下文)我误解的关键是没有意识到这一点(javascript的基础)
var z; 如果z已经存在,则绝对没有
这就是这个表达式似乎有两种方式,如果你错误的假设"var z"总是初始化.
从左边开始,"var z"只是确保定义了z,但是如果已经存在,则实际上不会影响任何现有值.然后在右边,如果z已经存在,则使用它,否则,变量刚刚被声明(但是为空),因此它不会被使用但不会引发错误.
这是关于Javascript中这种范围和提升问题的优秀文章:http: //www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
非常感谢minitech和其他所有贡献者!
我正在做一个关于nettuts的免费jQuery课程,叫做Jeffrey Way学习jquery 30天,我有四件事我真的很难过,首先是这里的代码:
(function() {
$('html').addClass('js');
var contactForm = {
container: $('#contact'),
init: function() {
$('<button></button>', {
text: 'Contact Me'
})
.insertAfter('article:first-child ')
.on('click', this.show);
},
show: function() {
contactForm.container.slideDown(500);
}
};
contactForm.init();
})();
Run Code Online (Sandbox Code Playgroud)
当您单击网站上的"与我联系"按钮时,它基本上会滑下联系表单.我的问题是:
.on('click', this.show);你为什么需要this在this.show?contactForm.container.slideDown(500);为什么不能只是说container.slideDown(500);或$('form.contact').slideDown(500); (顺便说一下,滑下来的形式的id是contact.我刚刚发现可以将关键字var用作类名:
public class var // no problem here
{
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我重载隐式强制转换运算符,我可以以一种有趣的方式使用我的类:
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
var x = 1; // var is of type MyApp.var
}
}
public class var
{
public implicit operator var(int i)
{
return new var();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,是否仍然可以以某种方式使编译器推断出类型?这篇博客文章指出它是不可能的(转到以"或者,另一个例子"开头的段落),但也许自2009年以来发生了变化?
这是我的循环代码
var username = ['Sam', 'Adarsh', 'Rohit', 'Rajat'];
for(var i in username){
console.log(username[i]);
}
Run Code Online (Sandbox Code Playgroud)
它根据需要输出相同,但我不确定为什么需要声明.我理解VAR和LET的概念,但不确定var在哪些情况下会在for循环中产生问题?
任何身体请帮助我理解这个概念.我是新的菜鸟,试图找出:)
谢谢你的帮助.
console.log(a) //output:ƒ a(){}
var a = 1;
function a(){};
var a = 10;
console.log(a) //output:10
Run Code Online (Sandbox Code Playgroud)
====================
var a = 1;
if(true){
function a(){};
var a = 10;
}
console.log(a) // this code throws Uncaught SyntaxError: Identifier 'a' has already been declared
Run Code Online (Sandbox Code Playgroud)
除了if块之外,上面两个代码片段是相同的.为什么后者在javascript中允许delcare同一个变量两次在同一范围内使用var,如下所示抛出错误
function a(){};
var a = 10; //no error
Run Code Online (Sandbox Code Playgroud)
同样对于在上面的代码中从var变量= 10中删除var之后略有不同的情况,那么它工作正常但输出却令人惊讶
var a = 1;
if(true) {
function a(){};
a = 10;
}
console.log(a) //output:ƒ a(){}
Run Code Online (Sandbox Code Playgroud)
我很惊讶地看到这个输出,因为我期待10 ..因为在if块内声明的两个变量引用上面声明的相同变量javascript var不尊重块范围但功能范围...所以为什么不输出上面应该10点?当用函数表达式替换函数定义时,下面的代码输出10,就像我预期的那样.
var a = 1;
if(true) {
var a = function(){ …Run Code Online (Sandbox Code Playgroud) 如果我们声明一个变量和一个具有相同名称的函数,则它接受重新声明。但是,当我们在一个块内执行相同的操作时,它会显示重新声明错误。
码:
var x;
function x() {}; // no error.Run Code Online (Sandbox Code Playgroud)
但是在这种情况下,我得到了错误。
{
var inside; // re-declaration error.
function inside() {};
}Run Code Online (Sandbox Code Playgroud)
预期结果应该没有错误。