JavaScript变量,常量,字面量的定义与应用

什么是变量和常量,字面量

变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据,使用变量可以方便的获取或者修改内存中的数据。变量较为重要的是-声明方法-,-命名规则-和-作用域-三部分。
常量 指程序运行时,值不能改变的量为常量。通常用const来声明常量,声明固定的和精确的值(用处),但是过多的常量会降低程序的可读性和维护性(缺点),所以const使用较少,如需多次引用,建议使用变量。
字面量有的地方称为直接量,即看见什么,它就是什么。你也可以认为字面量就是一个值,比如变量的值。等号右侧的值均为字面量。

区别:

  • 常量与变量的区别:常量与变量的存储方式是一样的,只不过常量必须要有初始值,而且值不允许被修改,而变量可以无初始值,且可以多次赋值。
  • 常量与字面量的区别:常量与字面量均不会被改变。常量为存储数据的容器,而字面量为等号右侧的值,字面量是由字符串,数字等构成的字符串或数值。

声明变量

var只能声明一个变量,这个变量可以保存任何数据类型的值
var a = 1; //声明变量,赋初值为1
var b; // 声明变量,不赋值
b = 2; // 给变量赋值
一条语句,多个变量
您可以在一条语句中声明许多变量。
以 var 作为语句的开头,并以逗号分隔变量:
//var car = {c : 3, d :4, e, f :5};对象定义
var c = 3, d = 4, e, f = 5; // 声明多个变量
console.log(a, b, c, d, e, f);
结果如下:
1 2 3 4 undefined 5
声明可横跨多行
var a =1,
b =2,
c = 3;

重复声明 JavaScript 变量
如果再次声明某个 JavaScript 变量,将不会丢它的值
在这两条语句执行后,变量 a 的值仍然是 1:
实例:
var a =1;
var a;
但如果如下:
var a =1;
var a =2;
在这两条语句执行后,变量 a 的值会被覆盖为 2:

注意:声明之后,变量是没有值的(技术上,它的值是 undefined)
在脚本的开头声明所有变量是个好习惯
变量声明<=>对象定义

ES6之前并没有定义声明常量的方式,ES6标准中引入了新的关键字const来定义常量,使用const定义常量后,常量无法改变
ES6中还新增了let关键字来声明变量,作用与var相似,但其所声明的变量只在声明所在块内有效

JavaScript 标识符,即所有 JavaScript 变量必须以唯一的名称的标识。这些唯一的名称称为标识符。标识符可以是短名称(比如 x 和 y),或者更具描述性的名称(age、sum、totalVolume)。

构造变量名称(唯一标识符)的命名规则和规范

规则 - 必须遵守的,不遵守会报错

  • 必须以字母或下划线开头,也能以$和_符号开头(不推荐这么做),中间可以是数字、字母或下划线。
  • 不能包含空格或 加号、减号等符号
  • 不能使用JS中的关键字,如boolean ,for,else,this,in等。
  • 严格区分大小写。

规范 - 建议遵守的,不遵守不会报错

  • 变量名必须有意义
  • 遵守驼峰命名法。(首字母小写,后面单词的首字母需要大写。例如:userName、userPassword)

变量提升(hoisting)

var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;

上面代码中,变量foo用var命令声明,会发生变量提升,即脚本开始运行时,变量foo已经存在了,但是没有值,所以会输出undefined。变量bar用let命令声明,不会发生变量提升。这表示在声明它之前,变量bar是不存在的,这时如果用到它,就会抛出一个错误。

函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。JavaScript 只有声明的变量会提升,初始化的不会。
为了避免这些问题,通常我们在每个作用域开始前声明这些变量,这也是正常的 JavaScript 解析步骤,易于我们理解。

JavaScript 中有六种数据类型包括:

五种基本数据类型

  1. Number:包含整数和浮点数两种类型。isNaN() 函数用于检查其参数是否是非数字值。
  2. String: 由Unicode字符,数字,标点符号等组成的序列。字符串数据包含在单引号或双引号中,同时单引号界定的字符串中可以有双引号,反之亦然。toString()方法可以将其他类型的数据转为字符串,但不能用于null和undefined。
  3. Boolean: 布尔型数据只有两个,true和false,一般用来判断某个事物是真还是假。
  4. Undefined: 声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。
  5. Null: 用于定义空的或不存在的引用。null并不等于空字符串或数字0。

复杂(引用)数据类型

  1. Object: 对象是一组属性与方法的集合。
    用 typeof( 参数名 ) 函数可以返回参数的数据类型。
	    例如:
	    var apple=1;
        var lemon="柠檬";
        var banana=true;
        var pear=null;
        var orangr=undefine;


        var peach=function peachSum(){

        }
        var water={};
        console.log(typeof.water);

还有新添symbol对象可参考:
链接: https://es6.ruanyifeng.com/#docs/symbol.

作用域

作用域 指变量在程序中的有效范围。JS中根据作用域分为全局变量和局部变量。全局变量作用于整个脚本代码,局部变量只作用于定义的函数体内。
Let 关键词允许声明一个作用域被限制在块级中的变量、语句或者表达式。
常量作用域,是常量所在的块。(块可以理解为大括号)

for (i=0; i<5; i++) {
    const A = 3;
    console.log(A);
}

console.log(A); // 报错 Uncaught ReferenceError: A is not defined
function m() {
    const B = 1;
}
m();
console.log(B); // 报错 Uncaught ReferenceError: B is not defined

生存期

生存期是指常量和变量在计算机中存在的有效时间。从编程的角度来说,可以简单地理解为常量或变量所赋的值在程序中的有效范围。

JavaScript中生存期有两种:全局和局部
全局的有效范围从其定义开始,一直到本程序结束为止。
局部的有效范围只有在该函数之中,当函数结束后,局部的生存期也就结束了。

<script >

var a = 100; //全局变量(公有)
let b = 200; //局部变量(私有)

//赋值过程叫复制
//关键字 变量 = 初值(字面量)
// const 常量 = 初值 常量就不可以改变的变量

//键对值 key = value
</script>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想想了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值