精华内容
下载资源
问答
  • JavaScript中使用var定义变量和不适用var定义变量的区别 1、不使用var定义一个变量 不使用var定义一个变量时是定义了全局对象window的一个属性,事实上你无论在代码中的任何一个部分(全局或者在某一代码块中)声明...

    JavaScript中使用var定义变量和不使用var定义变量的区别

    1、不使用var定义一个变量
    不使用var定义一个变量时是定义了全局对象window的一个属性,事实上你无论在代码中的任何一个部分(全局或者在某一代码块中)声明的都是一个全局变量,可以通过delete运算删除该属性(变量)

    2、使用var定义一个变量
    使用var定义一个变量时,事实上你仍旧是在定义一个window的属性,但是这个属性是不可配置的,也就是说无法通过调用delete运算来删除该属性,而且var声明的变量涉及到作用域的问题,即:局部变量和全局变量;

    你可以浏览关于ECMAscript6标准的第一章节或者一些深入解析JavaScript的书籍、博客或者官方文档来了解关于局部变量和全局变量(作用域)方面的知识。

    展开全文
  • 在javascript中,定义变量有两种方式: var i = 0; i = 0;这两种方式都对,只不过是...区别在于如果没有var定义的变量,javascript会默认该变量时全局变量,而如果有了var的定义的话,会限制该变量的范围。当然如果

    在javascript中,定义变量有两种方式:

    var i =  0;
    i = 0;
    这两种方式都对,只不过是有区别的。区别在于如果没有var定义的变量,javascript会默认该变量时全局变量,而如果有了var的定义的话,会限制该变量的范围。当然如果一开始var定义的变量就是全局变量,那么也就没什么区分了。看下面代码:

    <script>
    var a=1;
    b=2;
    function a(){
    c=3;
    var d=4;
    }
    alert(a);
    alert(b);
    alert(c);
    alert(d);//这个就会报错,因为它不是全局变量
      </script>
    应该能理解吧。。。

    展开全文
  • 在js中定义变量的时候,我们习惯了用var,其实省略var也可以用的。...2、省略var定义变量,如a = "sss", 定义了一个全局变量对象a,a没有被delete掉前,我们可以直接在浏览器console输入a即 可看到结果,在任何一...

    在js中定义变量的时候,我们习惯了用var,其实省略var也可以用的。

    今天总结一下,使用var或省略var 定义变量的区别
    1、var  私有变量,只能在当前js使用,或者在当前作用域使用,定义私有变量,不能delete;
    2、省略var定义变量,如a = "sss", 定义了一个全局变量对象a,a没有被delete掉前,我们可以直接在浏览器console输入a即   可看到结果,在任何一个js都可以调用这个对象,可以选择delete。
     
    不建议省略var,省略var的时候要慎重
    省略var会带来以下:
    1.  语义不清楚。 
    2.  团队开发时,容易覆盖掉其它作用域内的变量,引发异常。
    3.  给window对象添加不必要成员,也就是给window带来不必要的污染,所以用完最好顺便delete掉,以免影响其他变量

    转载于:https://www.cnblogs.com/qijuzi/p/8329994.html

    展开全文
  • 之前我们在写js代码的时候都知道可以用var定义全局变量和局部变量,也可以省略var,而且在非严格模式下不会报错,但是并不知道两者的区别... var x = 1; y = 4; console.log(x);//1 console.log(y);//4 console.log...

    之前我们在写js代码的时候都知道可以用var定义全局变量和局部变量,也可以省略var,而且在非严格模式下不会报错,但是并不知道两者的区别...

    var x = 1;
    y = 4;
    console.log(x);//1
    console.log(y);//4
    
    console.log(window.x);//1
    console.log(window.y);//4

    简单测试下可以知道定义的x和y都被挂载在window对象上,变为window下的属性,这并不能说明什么...

    delete x;
    delete y;
    
    console.log(window.x);//1
    console.log(window.y);//undefined

    再看看执行上面代码之后x属性没有被删除,y被删除了,这是区别就来了

    在通过var进行定义后的变量不能被delete删除,这是什么原因?ECMAScript 5标准中,可以通过Object.getOwnPropertyDescriptor()来获取对象自身某个property的属性信息:

    console.log(Object.getOwnPropertyDescriptor(window,"x"));
    console.log(Object.getOwnPropertyDescriptor(window,"y"));

    得到如下信息:


    当不使用var进行定义是,变量默认的configurable为true,可以进行delete等命令进行操作,而当var在定义一个全局变量的时候configurable 变为了false,即不会被delete删除.


    此外,简单说一下关于变量提升问题

    alert(a);//Uncaught ReferenceError: a is not defined
    a = 100;
    alert(b);//undefined
    var b = 200;
    先说第二段代码,var声明的全局变量b在js中会进行代码提升,也就是说var b = 200;会被分解为var b;b=200;代码解析的第时候会将var b;提升到最前面,并且在内存中开辟一个空间,由于b没有被赋值,默认为undefined.第一段代码中当js执行alert()函数时候由于没有进行var声明,变量没有被提升,不存在内存开辟,所以在alert时候直接报错!

    在ECMAScript6标准中,一个重要的概念就是"JavaScript严格模式",需要在最前面加上"use strict";

    let注意点:

    1.let拥有块级作用域,一个{}就是一个作用域

    2.let在其作用域下面不存在变量提升

    3.let在其作用域中不能被重复声明(函数作用域和块级作用域)

    第一点:let的块级作用域

    注意:以下代码都在严格模式下执行的

    let n = 10;
    if(true){
    	let n = 50;
    }
    console.log(n);//10
    表示外层代码块不受内层代码块的影响,如果是用var定义的变量n,那么输出的就是修改后的50.

    第二点:变量提升问题

    alert(a);//Uncaught ReferenceError: a is not defined
    let a = 100;

    不同var,let不存在变量提升,以上写法会直接报错.

    第三点:重复声明问题

    (function(){
    	let lTest = "let";
    	var vTest = "var"
    	
    	let lTest = "let changed";//Uncaught SyntaxError: Identifier 'lTest' has already been declared
    	var vTest = "var changed";
    	
    	console.log(lTest);
    	console.log(vTest);
    })();
    
    let在同一个作用域下不允许进行重复变量声明.否则也是直接报错!!!


    const命令

    const用来声明常量,一旦声明,其值就不可以更改,如果你非得修改变量的值,js不会报错,只是默默表示失败(不起作用)

    const的作用域与let相同,只在声明所在的块级作用域内有效,并且也是和let一样不可以重复进行声明.



    展开全文
  • 不使用var定义变量和使用var的区别 最基本的var关键字是上下文的,而不采用var是全局的这就不讨论了  “不管是使用var关键字(在全局上下文)还是不使用var关键字(在任何地方),都可以声明一个变量”。这貌似...
  •  JavaScript中使用var和不使用var定义变量主要有两个区别: 1.var a = 1; function aaa(){ b = 2; }; console.log(a);//1 //console.log(b);//b if not defined aaa(); console.log(b);//2代码...
  • var定义在if语句中变量会不会提升

    千次阅读 2019-08-18 20:51:23
    console.log(a); if (false/true) { var a = 1; } //undefined console.log(i); for (var i = 1; i < 5; i++) { ...在if/for语句var定义的变量会提升(在严格模式下一样)(chrome/firefox/IE) ...
  • 1、delete只能删除不是通过var定义的变量var deletefalse='删除不了' undefined deletetrue='能删除' "能删除" delete deletefalse false delete deletetrue true deletefalse "删除不了" ...
  • JavaScript通过var定义全局变量与在window对象上直接定义属性的区别关于window区别一区别二区别三 关于window 一、所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。 二、全局变量是 window ...
  • var定义的变量:会将声明提升到全局作用域的顶端。 console.log(a);//undefined var a = ‘哈哈’; console.log(a);//哈哈 解析:在控制台打印第一个a输出undefined是因为a在下面用var定义了。 声明提升情况...
  • var 定义类中的变量

    2012-11-15 10:41:13
    var定义的变量如果没有加protected 或 private则默认为public。在类的内部和外部都可以访问。  public是定义property(属性)和method(方法)的可见性的关键字,用public修饰的属性和方法在类的内部和外部都可以...
  • js var定义变量

    千次阅读 2018-08-27 01:51:50
    var num = 1; 是在当前域中声明变量. 如果在方法中声明,则为局部变量(local variable);如果是在全局域中声明,则为全局变量。 而 num = 1; 事实上是对属性赋值操作。首先,它会尝试在当前作用域链(如在...
  • let和var定义变量的区别

    万次阅读 2018-05-06 18:05:33
    二、声明后未赋值,表现相同 var varTest; let letTest; console.log(varTest); //输出undefined console.log(letTest); //输出undefined也即是说声明后直接使用输出都是一样的undefined三、...
  • javaScript与java、c语言虽然有很多相同,但是也存在区别 JavaScript的变量没有块范围 ... var scope="全集变量"; function test(){ //全局变量被局部变量覆盖 document.writeln(scope+"") //定义scope
  • js中let和var定义变量的区别

    万次阅读 多人点赞 2015-09-28 10:30:08
    本文对比了js中let和var关键字在声明变量时的异同之处。
  • JavaScript中 let 和 var 定义变量说明

    千次阅读 2018-04-14 15:04:10
    语法let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];参数var1, var2, …, varN变量名。可以是任意合法的标识符。value1, value2, …, valueN变量的初始值。可以是任意合法的表达式。描述let...
  • ts和js中let和var定义变量的区别

    千次阅读 2017-12-18 17:48:12
    重复定义let: class Test { public name: string = " Test " ; public run(){ let a; //该行报错 Cannot redeclare block-scoped variable 'a'. var b; let a; var b; //该行报错 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,877
精华内容 21,950
关键字:

var定义