01-JS中字面量与变量


01-JS中字面量与变量

一、直接量(字面量)

字面量:英语叫做literals,也做直接量,看见什么,它就是什么。

(一)数字的字面量

数字的字面量,就是这个数字自己,并不需要任何的符号来界定这个数字。

例如:数字8 就是数字8,没有代表其他值,这就是字面量(需要注意数字也有进制问题)

1.整数

JS中,数字的整数字面量可以有三种进制:

10进制:普通的数字就是十进制

8进制:如果以0、0o、0O开头数字字面量是八进制,八进制只包括数字0-7

16进制:如果以0x,0X开头数字字面量是十六进制。十六进制整数可以包含(0-9)和字母a-f或A-F

(1)八进制

(2)十六进制

2.浮点数(小数或指数)

计算机世界中,小数称为“浮点数”。

指数就是:允许使用e来表示乘以10的几次幂:


3.特殊字面量

(1)Infinity 无穷大

(2)NaN

英文全名叫做not a number,不是一个数

它不是一个数,却是一个字面量


(二)字符串的字面量

字符串是一个术语,说白了就是我们说的话。(自己理解的)

1.字符串字面量的书写方式

字符串的字面量有限定符,就是必须用双引号、单引号包裹起来。字符串被限定在同种引号之间;也就是说,必须是成对单引号或成对双引号。


2.特殊字符

在字符串中可以使用一些特殊字符,他们有特定的含义

\n New line 换行符

\t Tab tab缩进

// 转义字符
    alert("你们\n是\n不是\n已经都学过了");

这里 \ 反斜杠就是我们通常所说的转义符号,可以将没有意义的字面n转为有意义的换行,

同样换行符也可以将有意义的符号转为没有意义的不同字符

在使用字符串中可以使用转义字符

' 单引号

\ "双引号

\ 反斜杠

// 使用反斜杠\转义字符
    console.log("是\"小蔡\"啊");

二、变量

变量(Variables),和高中数学中的x、y、z很像,它们此时不是字母,而是代指一些值的符号。

它和直接量不同,直接量5,就是数字5;直接量"你好"就是字符串"你好"

(一)整体了解


我们用var关键字来定义变量,所谓的关键字就是一些特殊功能的单词,关键字后面要有空格。

var 就是英语variables变量的缩写,表示定义一个变量,一旦你

var a;

你的电脑内存中,就会开辟一个空间,命名为a,等待你给这个变量空间存放一定的值。

一旦声明变量后,就可以给变量赋值,js中给变量赋值用等号,等号右边赋值给左边。

a = 200;

现在a变量的值就是200,所以我们输出

console.log(a);//控制台输出变量值为200

(二)变量必须先声明,再使用

使用一个变量,必须先进行一个var,才能使用。var这个过程可以叫做声明declaration,也可以叫做定义definition。叫声明一个变量,或定义一个变量。

如果变量未声明就直接使用就会报错:

console.log(b);  //Uncaught ReferenceError: b is not defined
    // ReferenceError引用错误
    // b is not defined b未定义

(三)变量命名规则

变量的名字就是标识符,任何标识符的命名都需要一定的规则:

JS中标识符的定义规则,可先理解为变量的规则,以后我们还会接触到其他标识符

1.由字母、下划线(_)、美元($)符号、数字(0-9)组成

2.不能以数字开头

? 也就是说,一个标识符必须由字母、下划线、美元符号开头,后续可以有字母、下划线、美元符号、数字

3.严格区分大小写

? 所以A和a不是同一个变量

4.不要使用中文变量

5.不能使用关键字和保留字


关键字(js已经赋予特殊功能的单词):
break、else、new、var、case、finally、return、void、catch、for、switch、while、continue、function、this、with、dafault、if、throw、delete、in、try、

保修字(js预定可能未来要使用的字):

abstract、enum、int、short、boolean、export、interface、static、byte、extends、long、super、char、final、native、synchronized、class、float、package、throws、const、goto、private、transient、debugger、implements、protected、volatile、double、import、public

(四)变量的赋值

变量的赋值用等号,等号就是赋值符号,在JS中等号没有其他的含义,等号就表示赋值。

1.可以将定义和赋初值写在一起

var a = 200;
console.log(a); //200

var a = 100;
var b = 200;
a = b;  //在改变a变量的值,a的值变为200,b的值不变
console.log(a);
console.log(b);

2.变量只要var一次就可以了

变量值需要var一次,后面改变变量的值的时候,就不需要var了,可以直接改变它的值。

var a = 200;
a = 50;
console.log(a); //50

3.var 后没有赋值的变量

如果一个变量,仅仅被var了,但是没有被赋初值,此时这个变量的值就是undefined

//定义不赋初值,值是undefined
var m;
console.log(m); //输出undefined

实际上我们使用var后,就已经定义了这个m,只不过这就是浏览器的一个规则,如果这个变量没有被赋初值,那么这个变量就视为没有“定义完成”。值就是undefined,就是空值的意思。

(五)不写var的情况

//不写var的时候实际上现在看不出来区别,今后就知道是一个全局变量
abc = 123;
console.log(abc);   //123

定义abc的时候没有写var,程序就没有报错,说明这个abc变量已经被定义成功了。现在看不出区别。其实var定义了一个全局变量,作用域是不能控制的。

(六)同时定义多个变量

定义多个变量时,中间用逗号隔开

var a = 7, b = 6, c = 9;
console.log(a);
console.log(b);
console.log(c);

(七)变量声明的提升

这是js特有的一个特点

我们先去改变变量的值,然后定义变量,由于JS有一个机制,叫做变量声明提升,所以现在程序在执行前已经看见这个程序有一行定义变量,所以就会提升到程序开头去运行。

a = 200;
var a;  //这行定义变量会自动提升到所有语句之前
console.log(a);   //200

注意:js只提升变量的声明,而不能提升变量的赋初值。

//提升只提升变量声明,而不提升赋初值,输出undefined
console.log(a);
var a = 100;

等价于

var a; //自动升级
console.log(a);  //undefined
a = 100;  //赋初值还留在原地

变量的传递

var a = 1;
var b = 2;
var c = 3;
a = b; //这里改变a的值,a的值变为2,b的值不变仍是2
b = c; //这里改变b的值,b的值变为3,c的值不变仍是3
c = a; //这里改变c的值,c的值变为2,a的值不变仍是2
console.log(a); //2
console.log(b); //3
console.log(c); //2

(八)区分变量还是直接量

变量的时候,不能加引号。如果变量加上引号,就变成字符串的直接量了。

var a = 200;
console.log("a");  //a

var a = "大家好";
conslog.log("a")

引号是“字符串”的定界符,所以在双引号里面的a已经失去了变量的意思,就是一个字符串a。

js