运算符结合性与优先级、数字、字符串、数组、对象、流程控制语句

100 阅读4分钟

结合性与优先级

  • 结合性,即语句运算是从左到右还是从右往左

如 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;
}