翼度科技»论坛 编程开发 JavaScript 查看内容

js中的变量

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
在JavaScript中,我们用var关键字来声明一个变量,var关键字后紧跟变量的名称,例如:
  1. var a1 = 40;
复制代码
a1就是变量的名称,用来标识一个变量,所以它又称为变量的标识符。一个变量的标识符必须是由字母、数字、下划线组成,但首字符不能为数字,如:
1user、#user 都不是正确的标识符,而user1、_user是正确的标识符。在JavaScript开发中,标识符命名方式通常采用驼峰命名法,如:userName、userPassCode,首个字符小写, 后续每个单词的首字符大写,形似一头骆驼的驼峰。
  1.   var a1 = 40;
  2.   var a2;
  3.   var a3 = "hello";
  4.   console.log(a1,a2,a3);
复制代码
在上述代码中,a1被赋值为40,而a2没有被赋值,a3被赋值为一串字符。通过console.log语句,我们可以在浏览器的控制台打印出它们的值。变量a1的值为40,变量a2因为没有被赋值,浏览器打印出 一个"undefined"值,而a3打印出"hello"的一串字符,我们称之为字符串。
变量提升

在JavaScript中,如果先使用一个变量,在后面才声明它,JavaScript解释器也不会报错,好像我们预先声明了它一样,这种现象就叫变量提升。例如:
  1.   //变量提升
  2.   console.log(var1)  //undefined
  3.   var var1 = 20;
  4.   // console.log(var2) 未定义,不能直接使用
复制代码
在上述代码中,我们先使用了变量var1,后面才声明了它,并赋值为20。尽管存在变量提升的现象,但变量在使用的时候,它的值还是"undefined",其编码等价于:
  1.   var var1;
  2.   console.log(var1);
  3.   var1 = 20;
  4.   // console.log(var2)
复制代码
先声明了一个变量var1,没有被赋值,然后再使用变量var1,其后再给var1赋值。最后一行var2因为没有预先声明,解释器运行到这儿会报错,它不属于变量提升的范畴。
全局变量

在函数体外通过var声明的变量都是全局变量。全局变量一旦声明后,在代码的整个作用域里都可以使用。例如:
  1.   var var1;
  2.   console.log(var1);
  3.   var1 = 20;
  4.   // console.log(var2) //error  var var2 = "hello world!"  //定义一个函数add  function add(x,y){      let result = x + y;      return result;  }  console.log(var2); //显示hello world
复制代码
上面声明了一个变量var2,并赋值"hello world",中间又定义了一个函数add(关于函数的使用,后面章节再详细介绍),最后打印变量var2,程序可正常执行。
一个全局变量也是window的变量。对于上述代码中的变量var1,我们也可以通过window对象,用点操作符引出var1,并使用它。如:
  1.   var var1;
  2.   console.log(var1);
  3.   var1 = 20;
  4.   console.log(var1);
  5.   console.log(window.var1);
复制代码
局部变量

在函数体内通过var声明的变量就是一个局部变量,局部变量只在函数体内有效。例如:
  1.   var var1 = "global";
  2.   console.log(var1);
  3.   function local(){
  4.       var var1="local";
  5.       console.log(var1); //输出"local"
  6.   }
  7.   local();
  8.   console.log(var1); //输出"global"
  9.                
复制代码
上面代码在函数体外申明了一个变量var1,并赋值"global",中间定义了一个函数local(),然后执行函数local,解释器输出局部变量var1地值“local”,最后一行输出全局变量var1地值“global”。
常量

常量用关键字const进行声明,常量声明并赋值后不可以再次赋值,否则解释器就会报错。例如:
  1.       const c1 = 40;
  2.       //c1 = 60; 常数不能再赋值
  3.       console.log(c1);
复制代码
块级作用域

变量可以用var关键字进行声明,也可以用let关键字进行声明。而let声明的变量在块作用域内有效。例如:
  1.   console.log(var6); //打印出undefined
  2.   {
  3.       var var6 = 30;
  4.       let var7 = 5;
  5.       console.log(var6); //打印出30
  6.       console.log(var7); //打印出5
  7.   }
  8.   console.log(var6); //打印出30
  9.   //console.log(var7); 超出作用域,不能使用
复制代码
变量var7在括号内部用let关键字进行声明,并赋值未5。其在括号的作用域范围了可以正常使用,在括号外面使用就会报错。
常量也只是在块级作用域里有效。
注意:全局变量实际上是绑定在window对象上地一个变量。
  1.   var var1 = "str";
  2.   console.log(var1);   //输出"str"
  3.   console.log(window.var1);//输出"str"
复制代码
文章同时发表在:码农编程网 欢迎访问
本节重点:

  • 变量需先声明再赋值,才可以正常使用
  • 由于JavaScript解释器存在变量提升的功能,如果我们先使用变量,接着再声明变量,解释器也有正常运行,只是这时变量的值是undefined
  • 用var声明的变量是全局变量,用let声明的变量是局部变量,他们的作用范围不一样。
  • const声明的全局变量,一旦赋值后不能被再次赋值。

来源:https://www.cnblogs.com/qqxz/p/17385111.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具