结合性与优先级
- 结合性,即语句运算是从左到右还是从右往左
如 a = b = 2 赋值是从右到左
—-3 + 2 * 5 加法和乘法是从左到右
- 优先级从低到高有:, < = < || < && < === < 大小判断(<,>) < 加减+- < 乘除*/ < typeof < 前置递减递增(++...) < 逻辑非(!) < 后置递减递增(...++) < new < 成员访问(x[y]或x.y) < 小括号
数字-日常用法
数字有四种进制法,分别是
let num = 10 //十进制
let num1 = 0b10 //2 二进制
let num2 = 010 //8 八进制
let num3 = 0x10 //16 十六进制
- 字符串转换数字,parseInt和parseFloat
- 转换整数用parseInt
parseInt('1100',10) //把字符串'1100'按十进制转换
parseInt('100',2) //也可以把'100'按二进制转换,得到结果4
默认按照十进制转换,八进制和十六进制同理,parseInt会自动去除小数点后的数字
- 转换浮点数用parseFloat
parseFloat('10.245') //结果把'10.245'转换为数字10.245
- 保留数字小数点后几位浮点数用toFIxed(x)
let num = 10.2225523;
num.toFixed(2) //将num转换为字符串,并保留小数点后二位,结果为'10.22'
- 浮点数无法做精确运算
0.1 + 0.2 /计算机内存用二进制形式存储,无法精确表示浮点数
上面结果为0.30000000000000004,所以0.1 + 0.2 != 0.3
- Math API
一个全局对象,拥有一些数学常数属性和数学函数方法,下面是Math的一些函数方法
- Math.floor 数字向下取整
Math.floor(232.98) //结果为232,去除浮点数小数点后的数字
- Math.ceil 数字向上取整
Math.ceil(23.01) //结果为24
- Math.round 小数位四舍五入
Math.round(23.4) //四舍五入,结果为23
- Math.random 得到一个0~1的伪随机数,包括0但不包括1
Math.random()
- Math.pow(x, y) 得到 x 的 y 次方
Math.pow(3, 2) //得到3的2次方等于9
字符串声明方式
- 有三种生命方式,分别是单引号、双引号和``符号
- 字符串可以用 \n 进行换行,用 \ 进行转义
"gorge is a 'smart' man '
上面代码,在'前加上转义字符\ 让'失去原先的含义,就可以在代码中显示 ' 了
- 想输出\字符,需要写\
let str = 'D:\name\index.html' //结果输出为'D:\name\index.html'
上面代码中,因为单独一个\会被理解为转义字符与后面的代码合并解读为\n,因此写\n,则会被解读为\ \n,\n经转义后仍是n,\n则输出\n
- 字符串模板
`${变量}`,用于拼接字符串
let name = 'stephen'
let name = 'stephen';
let identity = '老公';
let statement = '告诉你,${name}是我${identity}' //输出:告诉你,stephen是我老公
- 字符串访问与拼接
let name = 'stephen';
name.length; //结果为7,字符串后接.length可计算字符串长度
name[0] //结果为's',访问字符串中第一个字符
name + 'hha' //结果为'stephenhha',拼接字符串可用+号,也可以用字符串模板
无论对字符串做怎样的操作,都不会改变字符串
- 字符串查找与截取
let name = 'gorge;
name.indexOf('g'); //结果为0,查找字符子串的位置,起始是0
name.IndexOf('hen'); //结果为-1,查找字符子串的位置,找不到输出-1
name.lastIndexOf('or'); //从后往前查找字符子串的位置,结果为1
name.includes('or'); //结果为true 是否包含子串
name.startsWith('go'); //true 是否子串开头
name.endsWith('ge'); //true 是否子串结尾
name.substring(1, 3); //按下标截取字符字串,从1开始到3结束,结果为 'org'
name.substr(1, 2); //按长度截取字符字串,从1开始,截取两位字符
- 字符串的其它操作
let name = 'gorge';
- split(),把字符串打散变为数组
name.split(''); //结果为['g', 'o', 'r', 'g', 'e']
- trim(),把字符串两边的空格去掉
' 那啥 hello '.trim(); //结果为'那啥 hello'
- trimLeft(),只去掉字符串左边的空白字符
' 你好 '.trimLeft() //结果为'你好 '
- toUpperCase(),把字母转换为大写
'你m的qu四'.toUpperCase() //结果为"你M的QU四"
- toLowerCase(),把字母转换为小写
'你MA的'.toLowerCase() //结果为"你ma的"
- 数组
let arr = [1, [1, 2, 3], true, 'hello'] //数组里可以放任意类型的数据
数组.length,获取数组长度
arr.length 结果为4
arr[1][1] 结果为2
arr[arr.length - 1] //获取数组最后一项
arr[arr.length] //越界得到undefined
arr[arr.length] = 1 //给数组末尾新增一个1
arr.length = 0 //清空数组
- 对象 Object:对象是无序的数据集合,由若干个“键值对”(属性 : 值)构成
let people = {
name: 'gorge';
age: 22;
}