目录
JavaScript的语法和Java语言类似,每个语句以; 结束,语句块用{...} 。但是,JavaScript并不强制要求在每个语句的结尾加; ,浏览器中负责执行JavaScript代码的引擎会自
动在每个语句的结尾补上;
下面的一行代码就是一个完整的赋值语句:
下面的一行代码是一个字符串,但仍然可以视为一个完整的语句:
下面的一行代码包含两个语句,每个语句用; 表示语句结束:
语句块是一组语句的集合,下面的代码先做了一个判断,如果判断成立,将执行{...} 中的所有语句:
{...} 还可以嵌套,形成层级结构:
以// 开头直到行末的字符被视为行注释,注释是给开发人员看到,JavaScript引擎会自动忽略:
另一种块注释是用/*...*/ 把多行字符包裹起来,把一大“块”视为一个注释:
JavaScript严格区分大小写,如果弄错了大小写,程序将报错或者运行不正常。
Number
javaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型:
Number可以直接做四则运算,规则和数学一致:
字符串
字符串是以单引号‘或双引号"括起来的任意文本,比如‘abc‘ , "xyz" 等等。‘‘ 或"" 本身只是一种表示方式,不是字符串的一部分,因此,字符串‘abc‘ 只有a , b , c 这3个字符。
布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有true 、false 两种值,要么是true ,要么是false ,可以直接用true 、false 表示布尔值,也可以通过布尔运算计算出来:
&& 运算是与运算,只有所有都为true , && 运算结果才是true :
|| 运算是或运算,只要其中有一个为true , || 运算结果就是true :
! 运算是非运算,它是一个单目运算符,把true 变成false , false 变成true :
比较运算符
当我们对Number做比较时,可以通过比较运算符得到一个布尔值:
JavaScript在设计时,有两种比较运算符:
第一种是== 比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是=== 比较,它不会自动转换数据类型,如果数据类型不一致,返回false ,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用== 比较,始终坚持使用=== 比较。
另一个例外是NaN 这个特殊的Number与所有其他值都不相等,包括它自己:
唯一能判断NaN 的方法是通过isNaN() 函数:
null和undefined
null 表示一个“空”的值,它和0 以及空字符串‘‘ 不同, 0 是一个数值, ‘‘ 表示长度为0的字符串,而null 表示“空”。
而undefined 表示值未定义大多数情况下,我们都应该用null 。undefined 仅仅在判断函数参数是否传递的情况下有用。
数组
数组是一组按顺序排列的集合,集合的每个值称为元素。JavaScript的数组可以包括任意数据类型。例如:
另一种创建数组的方法是通过Array() 函数实现:
数组的元素可以通过索引来访问。请注意,索引的起始值为0 :
对象
JavaScript的对象是一组由键-值组成的无序集合,例如:
变量
变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$ 和_ 的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如if 、while 等。申明一个变量用var 语
句,比如:
使用等号= 对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var 申明一次
启用strict模式的方法是在JavaScript代码的第一行写上:
这是一个字符串,不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。
JavaScript的字符串就是用‘‘ 或"" 括起来的字符表示。
如果字符串内部既包含‘ 又包含" 可以用转义字符\ 来标识,
表示的字符串内容是: I‘m "OK"!
转义字符\ 可以转义很多字符,比如\n 表示换行, \t 表示制表符,字符\ 本身也要转义,所以\\ 表示的字符就是\ 。
由于多行字符串用\n 写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用反引号 ``表示:
要把多个字符串连接起来,可以用+ 号连接:
如果有很多变量需要连接,用+ 号就比较麻烦。ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量:
字符串常见的操作如下:
要获取字符串某个指定位置的字符,使用类似Array的下标操作,索引号从0开始:
JavaScript的Array 可以包含任意数据类型,并通过索引来访问每个元素。
直接给Array 的length 赋一个新的值会导致Array 大小的变化:
Array 可以通过索引把对应的元素修改为新的值,因此,对Array 的索引进行赋值会直接修改这个Array
如果通过索引赋值时,索引超过了范围,同样会引起Array 大小的变化
常用方法
与String类似, Array 也可以通过indexOf() 来搜索一个指定的元素的位置:
数字30 和字符串‘30‘ 是不同的元素。
slice() 就是对应String的substring() 版本,它截取Array 的部分元素,然后返回一个新的Array
push() 向Array 的末尾添加若干元素, pop() 则把Array 的最后一个元素删除掉
如果要往Array 的头部添加若干元素,使用unshift() 方法, shift() 方法则把Array 的第一个元素删掉:
sort() 可以对当前Array 进行排序,它会直接修改当前Array 的元素位置,直接调用时,按照默认顺序排序
reverse() 把整个Array 的元素给掉个个,也就是反转
splice() 方法是修改Array 的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素
concat() 方法把当前的Array 和另一个Array 连接起来,并返回一个新的Array
实际上, concat() 方法可以接收任意个元素和Array ,并且自动把Array 拆开,然后全部添加到新的Array 里:
join() 方法它把当前Array 的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:
如果Array 的元素不是字符串,将自动转换为字符串后再连接
如果数组的某个元素又是一个Array ,则可以形成多维数组,例如:
上述Array 包含3个元素,其中头两个元素本身也是Array 。
JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。
JavaScript的对象用于描述现实世界中的某个对象。
1、定义一个对象
2、获取对象的属性
对象.属性
3、由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:
基础语法
遍历数组
无限循环
for ... in , 它可以把一个对象的所有属性依次循环出来:
由于 Array 也是对象,而它的每个元素的索引被视为对象的属性,所以遍历出来是下标
for ... in 对Array 的循环得到的是String 而不是Number 。
基本操作
do.....while
Map 是一组键值对的结构,具有极快的查找速度。
初始化Map 需要一个二维数组,或者直接初始化一个空Map 。Map 具有以下方法:
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
Set 和Map 类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set 中,没有重复的key。
重复元素在Set 中自动被过滤:
通过add(key) 方法可以添加元素到Set 中,可以重复添加,但不会有效果:
通过delete(key) 方法可以删除元素:
遍历 Array 可以采用下标循环,遍历Map 和 Set 就无法使用下标。
为了统一集合类型,ES6标准引入了新的iterable 类型,Array,Map,Set 属于;具有iterable 类型的集合可以通过新的for ... of 循环来遍历。
更好的方式是直接使用iterable 内置的forEach 方法,它接收一个函数,每次迭代就自动回调该函数。以Array 为例
Set 没有索引,因此回调函数的前两个参数都是元素本身:
Map 的回调函数参数依次为value 、key 和map 本身
原文:https://www.cnblogs.com/koudada/p/14848631.html