变量
变量可以用来保存字面量,而且变量的值可以任意改变
变量的定义和赋值
在JavaScript中,永远都是用var来定义变量(在ES6 之前),这和C、Java等语言不同
var a = 100;//赋值式声明
var b;//单纯的声明
命名规范
变量名有命名规范:只能由英语字母、数字、下划线、美元符号$构成,且不能以数字开头,并且不能是JavaScript保留字。
var _abc;
var $abc;//必须是$_字母作为开头,变量名称里还可以包含。
//var 1abc;//不允许数字开头
//var .abc;//不能以除_$之外的符号开头
关键字、标识符、保留字不可以当做变量
例如:
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
变量对大小写敏感,例如A和a是两个变量
var A = 250; //变量1
var a = 888; //变量2
总结:
1.建议用驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc
2.变量命名必须以字母或是下标符号”_”或者”$”为开头。
3.变量名长度不能超过255个字符。
4.变量名中不允许使用空格,首个字不能为数字。
5.不用使用脚本语言中保留的关键字及保留字作为变量名。
6.变量名区分大小写(javascript是区分大小写的语言)。
7.汉语可以作为变量名。但是不建议使用
变量声明的提升
JavaScript在解释执行之前,有预编译的过程,会将变量声明提升到最前面,但是不会将赋值提升
var a = "123"
var b = "456"
var c;
//声明没有赋值的情况下,会默认赋值为undefined
console.log(a)
console.log(b)
console.log(c)
c = 789
console.log(d)
var d = 7890
console.log(d)
变量的数据类型
在JS中一共有六种数据类型:
基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。
引用数据类型(引用类型):Object 对象。
注意:内置对象function、Array、Date、RegExp、Error等都是属于Object类型。也就是说,除了那五种基本数据类型之外,其他的,都称之为 Object类型。
数据类型之间最大的区别:
基本数据类型:参数赋值的时候,传数值。
引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。
typeof 运算符
typeof()表示“获取变量的类型”
typeof 数值的返回结果:number
typeof 字符串的返回结果:string
typeof 布尔型的返回结果:boolean
typeof undefined的返回结果:undefined
typeof null的返回结果:object
注:在JavaScript中,只要是数,就是 number 数值型的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是 number 类型的。
String字符串
(1)在JS中,字符串需要使用引号引起来。使用双引号或单引号都可以,但是不要混着用。
(2)引号不能嵌套:双引号里不能再放双引号,单引号里不能再放单引号。但是单引号里可以嵌套双引号。
(3)转义字符:在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义。
\" 表示 "
\' 表示 '
\n 表示换行
\r 表示回车
\t 表示制表符
\b 表示空格
\\ 表示\
将其他数值转换为字符串的三种方式:
拼串(任意数据类型+字符串都会被换成字符串)
toString()
String()
Number
在JavaScript中,只要是数,就是 number 数值型的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是 number 类型的。
数值范围
由于内存的限制,ECMAScript 并不能保存世界上所有的数值。
最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
最小值:Number.MIN_VALUE,这个值为: 5e-324
如果使用Number表示的变量超过了最大值,则会返回Infinity。
无穷大(正无穷):Infinity
无穷小(负无穷):-Infinity
注意:typeof Infinity的返回结果是number
NaN和isNaN()函数
NaN:是一个特殊的数字,表示Not a Number,非数值
console.log("abc" / 18);
//结果是NaN
console.log("abc" * "abcd");
//字符串相乘是没有结果的,但如果强行输出,就一定会给你一个结果。结果是NaN
注意:
typeof NaN的返回结果是number
Undefined和任何数值计算的结果为NaN
NaN 与任何值都不相等,包括 NaN 本身
isNaN
isNaN():任何不能被转换为数值的值,都会让这个函数返回 true。
(简单说就是问这个值是不是非数字,但是在问之前要进行类型转换)
isNaN(NaN);// true
isNaN("study"); // true
isNaN(669664); // false
浮点数的运算
在JS中,整数的运算基本可以保证精确;
但是小数的运算,可能会得到一个不精确的结果。
所以,不要使用JS进行对精确度要求比较高的运算
var a = 0.1 + 0.2;
console.log(a);
//打印结果:0.30000000000000004
隐式转换
“2”+1得到的结果其实是字符串,但是"2"-1得到的结果却是数值1,这是因为计算机自动帮我们进行了“隐式转换”。
也就是说,-、*、/、%这几个符号会自动进行隐式转换
var a = "4" + 3 - 6;
console.log(a);//输出37
所以最好自己完成转换,方便程序的可读性
Boolean 布尔值
true 和 false
主要用来做逻辑判断
直接使用,不需要加引号
null和undefined
null
专门用来表示一个为空的对象
var a = null
注意:
Null类型的值只有一个,就是null
使用 typeof 检查一个null值时,会返回object。
undefined
声明了一个变量,但是没有赋值
var a
此时它的值就是undefined
注意:
undefined类型的值只有一个,就是undefind
使用 typeof 检查一个undefined时,会返回undefined。
null和undefined异同
null == undefined //true
null === undefined //false
任何数据类型和undefined运算都是NaN
任何值和null运算,null可看做0运算