精华内容
下载资源
问答
  • const,let,var的特点

    2019-03-16 20:14:15
    const实际上保证并不是变量值不得改动,而是变量指向那个内存地址所保存数据不得改动。对于简单类型数据(数值、字符串、布尔值),值就保存在变量指向那个内存地址,因此等同于常量。但对于复合类型...

    (本文参考了该文章https://blog.csdn.net/hot_cool/article/details/78302673 

    const实际上保证的并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了。

    eg:

    const p  //错误,需要赋值
    const p = 1  //正确
    
    
    const a = 2
    const b = [1,2,3]
    const c = {"score1":11,"score2":22}
    
    a = 3 //错误,无法修改
    b[0] = 2 //正确,并没有修改指向数组[1,2,3]的指针,只是修改了里面的某一项
    c.score1 = 1 //正确,并没有修改指向{"score1":11,"score2":22}的指针,只是修改了里面的某一属性
    c = {"score1":11,"score2":22} //错误,即使是相同的数组或者对象赋值给他都是改变了他所指向的地址

    let和var的声明用法类似,他们的不同在于作用域。


    const,let,var都是无法跨函数的。

    es6中,增加了块作用域,在全局作用域,函数作用域和块作用域中三个钟,他们的表现不一样。

    1.块作用域{}

    if (1) {
        let a = 1
        var b = 2
        const c = 3
    }
    console.log(a) //报错 a is not defined
    console.log(b) //2
    console.log(c) //报错 c is not defined

    也就是说,let和const的作用域无法跨越块作用域,诸如if和for等都是块作用域。所以在for循环中的自增自减量用let会很方便

    for(let i=0;i<10;i++){
        console.log(i) //可正确输出值
    }
     console.log(i) //报错 i is not defined

    2.函数作用域

    三者都无法跨越函数作用域。

    eg:

    (function A() {
    	var d = 5
    	let e = 6
    	const f = 7
    	console.log(d) // 5
    	console.log(e) // 6  (在同一个{ }中,也属于同一个块,可以正常访问到)
    	console.log(f) // 7  (在同一个{ }中,也属于同一个块,可以正常访问到)
    
    })();
    // console.log(d); // 报错
    // console.log(e); // 报错
    // console.log(f); // 报错

     

    展开全文
  •  var 是3.5新出一个定义变量类型 其实也就是弱化类型定义 VAR可代替任何类型 编译器会根据上下文来判断你到底是想用什么类型 至于什么情况下用到VAR 我想就是你无法确定自己将用是什么类型 就可以使用VAR...

    转:       https://www.cnblogs.com/ggll611928/p/5991401.html

           var 是3.5新出的一个定义变量的类型 其实也就是弱化类型的定义 VAR可代替任何类型 编译器会根据上下文来判断你到底是想用什么类型的 至于什么情况下用到VAR 我想就是你无法确定自己将用的是什么类型 就可以使用VAR 类似 OBJECT 但是效率比OBJECT高点。

           或者通俗的讲:var可以理解为匿名类型,我们可以认为它是一个声明变量的占位符。它主要用于在声明变量时,无法确定数据类型时使用。

    使用var定义变量时有以下四个特点:

    1. 必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式: var s; s = “abcd”;

    2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。

    3. var要求是局部变量。

    4. 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace FirstPriject
    {
        class Program
        {
            static void Main(string[] args)
            {
                //声明并初始化变量
                var name = "张三";
                var age = 10;
                var sex = true;
    
                //获取变量的数据类型
                Type t_Name = name.GetType();
                Type t_Age = age.GetType();
                Type t_Sex = sex.GetType();
    
                //打印结果
                Console.WriteLine("变量name的类型是{0},变量age的类型是{1},变量sex的类型是{2}",
                    t_Name.ToString(),t_Age.ToString(),t_Sex.ToString());
    
                //不自动关闭控制台,等待输入
                Console.ReadLine();
            }
        }
    }

    实例结果图:

    展开全文
  • 一、var的特点 1、存在变量提升 console.log(a); // undefined var a = 10; // 编译过程 var a; console.log(a); // undefined a = 10; 2、一个变量可多次声明,后面的声明会覆盖前面的声明 var a = 10; var a = ...

    var,let,const三者的特点和区别

    一、var的特点

    1、存在变量提升
    console.log(a); // undefined
    var a = 10;
    
    // 编译过程
    var a;
    console.log(a); // undefined
    a = 10;
    
    2、一个变量可多次声明,后面的声明会覆盖前面的声明
    var a = 10;
    var a = 20;
    console.log(a); // 20
    
    3、在函数中使用var声明变量的时候,该变量是局部的
    var a = 10;
    function change(){
        var a = 20;
    }
    change();
    console.log(a); // 10
    
    而如果在函数内不使用var,该变量是全局的
    var a = 10;
    function change(){
        a = 20
    };
    change();
    console.log(a); // 20
    

    二、let的特点

    1、不存在变量提升,let声明变量前,该变量不能使用(暂时性死区)。
    console.log(a); // ReferenceError: a is not defined
    let a = 10;
    
    2、let命令所在的代码块内有效,在块级作用域内有效
    {
    	let a = 10;
    }
    console.log(a);  // ReferenceError: a is not defined
    
    3、let不允许在相同作用域中重复声明,注意是相同作用域,不同作用域有重复声明不会报错
    let a = 10;
    let a = 20;
    // Uncaught SyntaxError: Identifier 'a' has already been declared
    
    let a = 10;
    {
    	let a = 20;
    }
    // ok
    

    三、const

    1、const声明一个只读的变量,声明后,值就不能改变
    const a = 10;
    a = 20;  // TypeError: Assignment to constant variable.
    
    2、const必须初始化
    const a;  // SyntaxError: Missing initializer in const declaration
    const a = 10; // ok
    
    3、const并不是变量的值不能改动,而是变量指向的内存地址所保存的数据不得改动
    const obj = {
    	age: 17
    }
    obj.age = 18;  // ok
    
    obj = {
    	age: 18
    }
    //  SyntaxError: Identifier 'obj' has already been declared
    
    4、let该有的特点const都有

    四、区别

    1. 变量提升

    var声明的变量存在变量提升,即变量可以在声明之前调用,值为undefined
    let和const不存在变量提升,即它们所声明的变量一定要在声明后使用,否则报错

    1. 块级作用域

    var不存在块级作用域
    let和const存在块级作用域

    1. 重复声明

    var允许重复声明变量
    let和const在同一作用域不允许重复声明变量

    1. 修改声明的变量

    var和let可以
    const声明一个只读的常量。一旦声明,常量的值就不能改变,但对于对象和数据这种引用类型,内存地址不能修改,可以修改里面的值。

    五、使用

    能用const的情况下尽量使用const,大多数情况使用let,避免使用var。
    const > let > var
    const声明的好处,一让阅读代码的人知道该变量不可修改,二是防止在修改代码的过程中无意中修改了该变量导致报错,减少bug的产生。let声明没有产生预编译和变量提升的问题,先声明再使用可以让代码本身更加规范,let是个块级作用域,也不会污染到全局的变量声明。
    最后说一点就是使用的场景说明:let一般应用于基本数据类型;const 一般应用于引用数据类型,也就是函数对象等。

    展开全文
  • JS var关键字的使用特点 可重复声明变量,存在变量声明提升 使用var声明的变量没有块级作用域概念 var的作用域链

    JS var关键字的使用特点

    1. 可重复声明变量,存在变量声明提升
      前两行代码重复声明了a变量,最终全局a的值为1。而在foo函数中的第二行我们又声明了a变量,注意此时的a在foo函数作用域,var a = 100这行代码在编译时,会将var a 放在函数内部的第一行,此时a只是声明了,未初始化,所以第一个console.log(a)打印undefined,然后执行a=100,第二个打印100,第三个打印全局a,10
    2. 使用var声明的变量没有块级作用域概念
      在这里插入图片描述
    3. var的作用域链
      沿着作用域向上查找
    展开全文
  • 暂时了解到var有以下特点 /* * 1、var在编译器编译时候根据初始值推断出其类型 * 2、不能赋值除了初始值类型之外其他类型 * 3、不能将null赋值给var变量 * 4、var只能在方法体中进行定义,不能在类中,也...
  • 目录背景变量提升var let const 的区别var的特点let的特点const的特点总结使用建议参考文献 背景 小白初学前端,遇到变量声明,不知道选择哪个好一些,看了一些博客,总结一下,希望能够帮助到需要的人。 变量提升 ...
  • var 1.函数级作用域 2.存在变量提升 3.值可更改 let 1.具有块级作用域 2.不存在变量提升 3.值可以更改 4.暂时性死区 //暂时性死区 var num = 10; if(true) { alert(num);//变量会被绑定到这个块级作用域 let num =...
  • 一、var声明变量的特点: 1.var声明变量为全局声明,当声明在函数内部时为局部变量 2.var声明变量存在变量声明提升 3.var可以重复定义一个变量,即后面的覆盖前面的 二、let声明变量的特点 1.只在let所在代码块内...
  • Javascript中声明变量 var特点var特点: 变量声明提升 可重复声明 全部会挂载在window var定义变量是全局变量或者函数变量。 ES6中声明变量 let和声明常量 const特点: let特点: 不会进行变量声明提升 会...
  • 这里写自定义目录标题总结let和const的特点,与var对比块级作用域不存在变量提升不允许重复声明暂时性死区(TDZ)不在属于顶层对象的属性 总结let和const的特点,与var对比 你好! 这是你第一次使用 Markdown编辑器 ...
  • 使用var定义变量时有以下四个特点:1. 必须在定义时初始化。也就是必须是var s = “abcd”形式:2. 一但初始化完成,就不能再给变量赋与初始化值类型不同值了。3. var要求是局部变量。4. 使用var定义变量和object...
  • 面试经典题:let和var的用法,特点,原理和优点 let 一般用于声明变量,而且所声明的变量,只在let命令所在的代码块内有效,它的值可以修改。 var 声明的变量,在所在的块区域范围内都有效,所在的块区域只有一...
  • var,let,const三者区别

    2020-08-10 22:34:31
    1.var的特点 var声明的变量会提升到当前作用域的顶部,可重复赋值,可重复声明, 2.let的特点 let声明的变量不会提升,提前使用会报错,会形成块级作用域 console.log(a); // undefined var a = 100; console.log(a...
  • [c#]var类型用法和特点

    2020-07-25 11:09:52
    var在编译器编译时候根据初始值推断出其类型 如果我们要遍历一个数组,此时我们并不知道数组中存储数据类型是什么,那么在这时,我们使用var关键字,就可以比较方便了 **1.**在定义变量时候,必须先给值,不...
  • /var 文件系统 /var 包含系统一般运行时要改变数据。通常这些数据所在目录大小是要经常变化或扩充。原来 /var 目录中有些内容是在 /usr 中,但为了保持 /usr 目录相对稳定,就把那些需要经常改变目录...
  • ES6中 ,var,let和const区别

    千次阅读 2019-09-28 18:28:15
    var的特点 没有代码块的概念,全局范围内都有效 存在“变量提升”现象,即变量可以在声明之前使用,值为undefined let的特点 声明的变量仅在块级作用域内有效,存在了代码块的概念 不存在“变量提升”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,920
精华内容 1,168
关键字:

var的特点