01、字面量:数字和字符串
”字面量“即常量,固定值,不可改变
简单的字面量有两种:数字、字符串
-
数字
数字的字面量非常简单,直接写,不需要任何符号,如:
alert(888)//数字不需要加""
-
字符串
字符串的字面量也很简单,但是需要加上""
两者的区别:100是数字,"100"是字符串
总结
字面量都可以直接使用,但一般不会直接使用字面量
02、变量
概论
变量:变量可以用来保存字面量 ,而且字面量的值可以任意改变
变量的定义与赋值
js
中使用var关键字来声明一个变量,如
var a = 100; //赋值声明
var b; //单纯的声明,在声明没有赋值的情况下,默认赋值为undefined
c = 100 //默认如果没有加var进行赋值,会在全局中创建一个变量
PS:在JavaScript中,永远都是用var来定义变量(在ES6之前)
变量的命名规范
变量名只能由英文字母、数字、下划线、美元符号$构成,且不能以数字开头,并且不能是JavaScript保留字
保留字:
abstract、boolean、byte、 char、 class、 const、debugger、double、 enum、 export、 extends、 final、float、goto
implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile
1.建议用驼峰命名规则: getElementByld/matherAndFather/aaaOrBbbAndCcc
2.变星命名必须以字母或是下标符号”"或者”$"为开头。
3.变量名长度不能超过255个字符。
4.变量名中不允许使用空格,首个字不能为数字。
5.不用使用脚本语言中保留的关键宁及保留字作为变量名。
6.变量名区分大小写(JavaScript是区分大小写的语言)。
7.汉语可以作为变量名。但是不建议使用。
03、标识符
标识符:在js中所有可以由我们自主命名的都可以称之为标识符
如:变量名、函数名、属性名都是属于标识符。
标识符命名规则与变量的一样
PS:标识符不能使用脚本语言中保留的关键字及保留字。如:
关键字
break | do | instanceof | typeof | case | new |
---|---|---|---|---|---|
var | catch | finally | return | void | continue |
switch | while | default | if | throw | delete |
try | function | this | with | debugger | false |
null | true | in | for |
保留字
class | enum | extends | super | const | export |
---|---|---|---|---|---|
import | implements | let | private | public | yield |
interface | package | protected | static |
04、变量声明提升
JavaScript在解释执行之前,有预编译的过程会将变量声明提升到最前面,但是不会将赋值提升
var a = "100"
var b;
console.log(a)
//在声明没有赋值的情况下,默认赋值为undefined
console.log(b)
//没有声明直接报错
console.log(c)
//JavaScript在解释执行之前,有预编译的过程会将变量声明提升到最前面,
//但是不会将赋值提升,所以上面的输出不会报错但输出为undefined
var c = 100
05、变量的数据类型
变量可以储存数字、字符串等。变量会自动根据储存内容的类型不同,来决定自己的类型。
在js中一共有六种数据类型
- 基本数据类型(值类型):String( 字符串)、Number(数值)、Boolean(布尔值)、Null(空值)、Undefined(未定义)
- 引用数据类型(引用类型):Object(对象)
PS:内置对象function、Array、Date、RegExp
、Error等都属于Object类型。也就是说除了五种基本数据类型以外,其他的都称之为Object类型
数据类型之间最大的区别:
- 基本数据类型:参数赋值的时候,传数值
- 引用数据类型:参数赋值的时候,传地址
06、String字符串
代码如下:
var a = "asfsdf";
var b = "123456";
var c = "天气不错";
var d = "";
console.log(typeof a)
console.log(typeof b)
console.log(typeof c)
console.log(typeof d)
输出内容如下:
string
string
string
string
注意事项
-
在js中,字符串需要使用""或’'引起来,但是不能混用,错误示范如:
var a = "123456'
-
引号不能嵌套:双引号里面不能再放双引号,单引号里面不能再放单引号。但单引号里面可以嵌套双引号,反之亦然
-
转义字符:在字符串中我们可以使用
\
作为转义字符,当表示一些特殊符号时可以使用\
进行转义\"
表示"\'
表示’\n
表示换行\r
表示回车\t
表示制表符\b
表示空格
将其他数值转换为字符串有三种方式:
- 拼串
toString()
String()
07、typeof
运算符
typeof()
表示”获取变量的类型“,返回的是小写,写法如下:
typeof 变量
返回结果:
typeof 数值
的返回结果:numbertypeof 字符串
的返回结果:stringtypeof 布尔型
的返回结果:booleantypeof undefined
的返回结果:undefinedtypeof null
的返回结果:object
在JavaScript中,只要是数,都是number数值型。无论整浮、浮点数(小数)、无论大小、无论正负,都是number类型
08、Number数值型
在JavaScript中所有数值都是number类型,包括整数和浮点数。
数值范围
由于内存限制,ECMAScript
并不能保存世界上所有的数值
- 最大值:
Number.MAX_VALUE
,这个值为:1.7976931348623157e+308
- 最小值:
Number.MIN_VALUE
,这个值为:5e-324
如果使用number表示的变量超过最大值,则会返回Infinity
- 无穷大(正无穷):Infinity
- 无穷小(负无穷):-Infinity
PS:typeof Infinity
返回的结果是number
NaN
与NaN()
函数:
-
NaN
:表示一个特殊的数字,表示Not a Number,非数值。如:console.log("aaa"/8) //输出结果为NaN
PS:
typeof NaN
返回的结果为numberUndefined与任何数值计算的结果都为
NaN
,NaN
与任何数值都不相等,包括NaN
本身 -
isNaN()
:任何不能被转换为数值的值,都会让这个函数返回trueisNaN(NaN) // true isNaN("123") // true isNaN(123) // false
浮点数的运算
在js
中,整数的运算基本可以保证精确度;但是小数的运算可能会得到一个不精确的结果。所以千万不要用js
进行对精确度要求比较高的运算
如:
var a = 0.1 +0.2
console.log(a) //输出结果0.30000000000000004
上方代码中,打印结果并不是0.3 ,而是0.30000000000000004
我们知道,所有的运算都要转换成二进制去计算,然而,二进制是无法精确表示1/10的。因此存在小数的计算不精确的问题。
连字符和加号的区别
+
可能是连字符也可能是数值的加号,如:
console.log("a"+"b"+"c") //输出结果abc
console.log(1+2+3) //输出结果6
总结:如果+
两边都是数值,此时就是加号,否则就是连字符
09、隐式转换
例子:"2"+1
得到的结果是字符串,但是"2"-1
得到的结果却是1
原因:计算机自动帮我们进行了"隐式转换"
-
、*
、/
、%
这几个符号会自动进行隐式转换,如:
var a = "4" + 3 - 6
console.log(a) // 输出结果为37
PS:虽然计算机会自动的帮我们进行隐式转换,但是在实际中最好自己完成转换,使程序更具有可读性
10、Boolean布尔值
true和false。主要用来做逻辑判断。
布尔值可以直接使用,不用加""
var a = true
console.log(typeof a) //输出结果boolean
11、null和undefined
null:空值
一个专门用来表示为空的对象(如 var a = null
)。注意是专门用来表示空对象
- Null类型的值只有一个,就是null。如
var a = null
- 使用
typeof
检查一个null值时,会返回一个object
undefined:未定义
声明了一个变量,但未赋值(如 var a;
),此时他的值就是undefined
- Undefined类型的值只有一个,就是undefined
- 使用
typeof
检查一个undefined时,会返回一个undefined
null与undefined有很大的相似性,如:
console.log(null == undefined) //输出结果为true
但是
console.log(null === undefined) //输出结果为false
二者虽然相似,但还是有一定的区别,其中一个区别就是:和数字进行运算时,10+null
结果为:10;10+undefined
结果为:NaN
- 任何数据类型和undefined进行运算,其结果都是NaN
- 任何值和null进行运算,null可以看做0进行运算
12、变量值的传递(赋值)
语句:
a = b
将b的值赋给a,b不变
将等号右边的值,赋给左边的变量;等号右边的变量,值不变。