阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 变量的声明

      变量通过 var 来声明;

      下面是要避免的,否则写代码的时候可能会把自己给坑了;

      • 重复声明;

      • 不声明直接赋值

      • 不要更改变量的类型,开始是值类型,后面就不要改为数值或别的别的了,开始如果用来储存某个属性值,就不要再用在别的属性上了;

        推荐:先声明,后定义;

      • 需要读写的变量,读写前,一定要声明;

      • 需要运算的变量,运算前,一定要赋值;

      • 书写的时候,推荐把变量名放在页面的上面(上部分)去声明 + 定义;这样不仅可以放心大胆的用,而且可以方便查找变量;

      • 在任何情况下声明变量都要先声明;在使用一个变量之前应当先声明,变量是使用关键字 var/let/const 来声明的 (const 声明和定义必须一起做);

        var a=1;
        function test(){
          var b=c=2;//这时候会隐式声明全局变量;
        }
        test();
        console.log(a,c)
        

      上面是非常不好的写法;不要写 var b=c=2 这种声明;上面代码中 c 就会被隐式声明为全局变量;

      下面这种写法是可以的

      var a= 1,c;
      function test(){
        var b=c=2;
      }
      test();
      console.log(a,c)
      

      因为开始 c 已经声明了,后面只是给 c 赋值;

      多个变量声明赋值时候,同一类的变量推荐下面这种写法;

      var name="anbang",
          age=26,
          height="174cm";
      

      这样既可以简洁,又保证可读性;

      注意:任何变量赋值前都需要声明变量,不要隐式创建全局变量;

      重复声明和遗漏声明的区别:

      在 javascript 里使用 var 重复声明是合法而且不会有任何事情的,如果重复声明带有初始化的值,那么就和一条简单的赋值语句没有什么两样,但是如果你忘记声明了,试图读取一个没有声明的变量的值,javascript 可能会报错;

      在严格模式中,给一个没有声明的变量赋值也是会报错的;非严格模式下虽然不会报错,但是不要抱着侥幸的心理;这是一个不好的习惯,建议始终使用 var 来声明变量;

      ES6 扩展了 2 种声明方法;

      • let
        • 声明一个块作用域的局部变量,可以选择将其初始化为一个值
      • const
        • 声明一个只读的常量

      使用关键词 var。例如 var x = 42。这个语法可以用来声明局部变量和全局变量。

      使用关键词 let。例如 let y = 13。这个语法可以用来声明块作用域的局部变量;ES6 中更推荐用这个来声明变量;

      用 var 或 let 声明的且未赋初值的变量,值会被设定为 undefined;undefined 值在布尔类型环境中会被当作 false。所以程序中,利用数据的 true 和 false 判断逻辑也是常见的;

      常量不可以通过赋值改变其值,也不可以在脚本运行时重新声明。它必须被初始化为某个值。

      const myName="zhu";
      let age=2;
      age =22;
      // myName=4;//Error
      console.log(age);
      

      const 定义和声明必须一起

      const 是声明定义一个常量,后续就不可以修改了,所以不能先声明后定义,必须一起做

      //错误的
      const a;//Uncaught SyntaxError: Missing initializer in const declaration
      a = 10;
      
      //正确的
      const a = 123
      

      常量的作用域规则与 let 块级作用域变量相同。若省略 const 关键字,则该标识符将被视为变量。

      if(true){
          var a=2;
      }
      if(true){
          let b=3;
      }
      console.log(a);
      console.log(b);//b is not defined
      

      在同一作用域中,不能使用与变量名或函数名相同的名字来命名常量。

      目录
      目录