标识符
标识符定义
定义: 标识符是指变量、函数、属性的名字,或者函数的参数
- 区分大小写
- 必须以字母 或$或_开头
变量提升
js的工作引擎的工作方式:先解析代码,获取所有被声明的变量,然后一步步的运行。这就让所有的变量声明语句,都会被提升到代码的头部,这就是变量提升。
变量提升的例子
console.log(b) //undefined
var b=2
等价于
var b
console.log(b)
b=2
数据类型
- null(空缺)
- undefined(未定义)
- Number(数字类型)
- String(字符串类型)
- Boolean(布尔类型)
- Object(对象)
基本数据类型
基本数据类型
- Number(数字类型)
- String(字符串类型)
- Boolean(布尔类型)
Number
js的数字类型和其他语言不一样,没有整型和浮点型的区别,统一都是Number类型
var a=10 //十进制
var b=o73 //八进制
var c=ox44 //十六进制
Number中的浮点数
浮点数:浮点数是指数字包含小数点,小数点后至少有一位数字(没有或者是0会转为整数),前面可以没有。
var a= 0.75;
var b=.5;
虽然浮点数的最高精度是17位,但是真正计算的时候精度不如整数
1-0.9 //0.09999999999999998
0.1+0.2 //0.30000000000000004
数字范围
Number不能表示所有数字,有个范围
- Number.MIN_VALUE: 5e-324
- Number.MAX_VALUE: 1.7976931348623157e+308
超过最值会被转换为Infinity(无穷大),-Infinity(负无穷大)
判定无穷
可以通过isFinite()方法判断。超过返回true,没有返回false
isFinite(Number.MAX_VALUE + 1); // true
isFinite(Infinity); // false
isFinite(NaN); // false
isFinite(-Infinity); // false
isFinite(0); // true
isFinite(2e64); // true
isFinite("0"); // true
Boolean(布尔型)
布尔值代表“真”,“假”二中状态,“真”用关键字“true”,"假"用关键字false
下列运算符会返回布尔值
- 二元逻辑运算符: &&(And),||(Or)
- 前置逻辑运算符: !(Not)
- 相等运算符: ===,!==,==,!=
- 比较运算符: >,<=,<,<=
下列值是false,其余都是true
- false
- ""
- null
- undifined
- NaN
- 0
String类型
数据用双引号和单引号包裹起来的形式,俗称字符串类型。
获取字符串的长度可以用自带的length属性。从1开始
var a=''hhh'
a.length //3
字符串类型自带的方法
- indexOf()获取元素位置,里面是字符串,没有则返回-1。检索从0开始。
' abc'.indexOf('b') //1
- toUpperCase()转换为大写,toLowerCase()转换为小写 (原来的还是没有改变)
'abc'.toUpperCase() //ABC
'ABC'.toLowerCase() //abc
数组和字符串之间的转换
- 字符串的split()方法可以把字符串转换成数组。默认用‘,‘’隔开 (原来的还是没有改变)
'ab,c'.split("") //['a','b',',','c']
'abc'.split() //['abc']
'abcdf'.split('c') //['ab','df']
- 数组的join()方法可以把数组转换新的字符串,默认用','连接 (原来的还是没有改变)
['a','b','c','d'].join() //'a,b,c,d'
['a','b','c','d'].join('') //'abcd' 用空的连接
获取字符串中的片段
- substr(start,lenght)方法 检索从0开始,返回新的字符串
'abcdef'.substr(2,3) //'cde'
- substring(start,end)方法,检索从0开始,返回新的字符串,不包括end,长度为end-start
'abcdef'.substring(2,3) //'c'
引用类型
Object(对象)又叫引用类型,包括三种。
- 普通对象
- 数组
- 函数
函数:是一种特殊的对象,我们可以通过构成函数生成普通对象。
null和undefined的区别
null的用法和知识
null: 表示空,通常表示先占有一个内存,便于分配给后面元素。
典型用法:
- 作为函数的参数,表示该函数的参数是一个没有任何内容的对象。
- 作为对象原型链的终点。
undefined的用法
undifined: 表示不存在的值,表示已经分配存放空间,但是没有任何值。
典型用法:
- 变量被声明了,但是没有赋值时,就等于undefined。
- 调用函数时,应该提供的参数没有提供,该参数就等于undefined
- 对象没有赋值的属性,该属性的值为undefined
- 函数没有返回值时,默认返回undefined
用法区别
- typeof运算符的值不一样
typeof(undefined) //undefined
typeof(null) //object
- Number()方法的值不一样
Number(undefined) //NaN
Number(null) // 0
undefined == null //true
typeof运算符的用法
定义
typeof运算符可以返回一个值的数据类型,返回的是字符串
typeof 5 //'number'
typeof 'adc' //' string'
typeof null //'object'
typeof undefined //'undefined'
typeof NaN //'number'
typeof function(){} //' function'
typeof [] // 'object'
typeof {} //'object'
typeof false //'boolean'
NaN
NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,也无法比较大小,包括自己
typeof NaN //number
数据转换
有三个函数可以把非数值转换为数值
- Number()方法
- parseInt()方法
- parseFloat()方法
Number规则相当复杂而且不合理,几乎不使用,常用的是后两个,两个规则类似.
- 忽略字符串前面的空白字符,找到第一个非空白字符
- 如果第一个字符不是-或者数字返回NaN
- 如果是继续解析,直到非数值模式为止
- 0开头会当做八进制,0x开头会当做十六进制,但是可以指定第二个参数指定基数
parseInt("hh44") //NaN
parseInt('-55') //55
parseInt('5512') //5512
parseFloat(".5") //0.5