js中变量的定义的三中方法:const,var,let

 

1.const

  const 设置的是常量,一经设置不可改变。在设置时必须赋初值。

2.var   

  var设置的是变量,可以不赋初值。

  如果不赋初值的话,变量的类型为undefined;

  如果赋值为:

var a="";

  则a 的类型为string;

  定义时,有无加var的区别:

    在JS里的全局环境就是一个对象,这个对象也是JS运行的根,对浏览器中的JS,这个对象就是window对象。对全局JS语句来说,window对象就相当于当前作用域。

1 var mylike="java";//定义了window作用域的一个变量 mylike;
2 yourlike="c#";    //定义了window作用域的一个属性 yourlike;

    在全局语句中,加不加var并没有什么区别,但在函数体中加不加var是有区别的

   

 1   var mylike = "c#";
 2   yourlike = "c++";
 3   console.log("mylike is "+mylike+" "+"yourlike is "+yourlike);    //mylike is c# yourlike is c++
 4   function change(){
 5     console.log("in the function 's mylike "+mylike+"in the function's  yourlike "+yourlike);  //in the function 's mylike undefinedin the function's  yourlike c++
 6
 7     var mylike = "java";
 8     yourlike = "php";
 9     console.log("change mylike "+mylike+"change yourlike "+yourlike);   //change mylike javachange yourlike php
10   }
11   change();
12   console.log("next mylike "+mylike+""+"next yourlike "+yourlike);       //next mylike c#next yourlike php

    加了var 的在函数内外表现为两个属性,var 定义的变量是有作用域的。而函数相当于在全局作用域中创建了一个子作用域。js遇到变量或函数时会首先在当前作用域找,没找到再往上一级作用域找。在change函数中如何没有 定义 var mylike 则会输出 “in the function ‘s mylike c#”,而上面在函数中定义 var mylike,当前作用域存在 mylike这个变量,而在一开始mylike还没赋值,为undefined。

    在函数中mylike是一个值,函数外mylike是一个值。而没有var修饰的只表现出一个东西。

3.let

  let是块级作用域,在函数中定于let变量,在函数外无影响

1   let a=1;
2   console.log(a);       //1
3   function change(){
4     let a = 333;
5     console.log(a);     //333
6   }
7   change();
8   console.log(a);       //1
03-29 23:20