基本语法
赋值语句
字符串
每个语句用分号结束,不介意一行写多个语句
注释
大小写 严格区分大小
数据类型和变量
Number javascript不区分整数和浮点数 ,统一用number表示,number可以直接做四则运算,规则和数学一样。注意%是求余运算。
字符串
布尔值
布尔值只有两个值要不是true ,要不是false 布尔值经常用在条件判断中
或与非 &&与 ||或 !非
比较运算符
我们对number做比较的时候 可以通过运算符得到布尔值 。 注意false == 0 //true值相等 false === 0//false类型相等
NaN === NaN //false
NaN与所有其他的值都不相等 ,包括他自己 唯一能判断NaN的方法是通过isNaN()函数
浮点数的相等比较
浮点数在运算中会产生误差 所以值相等的浮点数 得到的结果是false
null 空值和undefined 值未定义
大多数情况下用null,undefined仅仅在判断函数参数是否传递的情况下有用
数组
数组是一组按顺序排列的组合 ,集合的每个值称为元素 数组中包括任意数据类型 索引的起始值为0
对象
对象是由键-值组成的无序集合 对象的键都是字符串类型 值可以是任意数据类型 获取一个对象的属性,我们用对象变量.属性名的方式。
变量
变量名不能是关键字 申明一个变量用var语句 用等号对变量进行赋值 可以是任意类型赋值的变量 同一个变量可以反复赋值 ,可以是不同类型的变量 注意只能用var申明一次
strict模式
如果没有通过var申明就被使用 那么该变量为全局变量 注意陷阱 全局变量 会影响同个页面的不同js文件 使用var 申明的变量 不是全局变量 他的范围被限制在该变量被申明的函数体内 同名变量在不同的函数体内互不冲突 在js代码之前加‘use strict’;
操作字符串
字符串可以获取他的长度 .length;
要获取字符串某个指定位置的字符,使用类似array的下标操作 索引号从0开始 超出范围的索引不会报错 但一律返回 undefined
字符串是不可变的 如果对字符串的某个索引赋值 但是,也没有任何效果
对字符串的改变 调用方法不会改变原有字符串的内容 ,而是返回一个新字符串:
toUpperCase()把字符串变为大写
toLowerCase()把字符串变为小写
indexof()搜索指定字符串出现的位置 返回指定字符串的第一个位置
substring()返回指定索引区间的子串,从索引开始多少到多少
数组
直接给array的length赋一个新的值会导致array大小发生变化 array可以通过索引下标修改为新的值 通过索引赋值 ,索引超过了范围 同样会引起array大小的改变 大多数编程语言不允许直接改变数组的大小 ,越界访问索引会报错 而js不会有任何错误
indexof和字符串类似
slice()和字符串的substring()类似 注意slice的起止参数包括开始索引,不包括结束索引 不传参数 就是数组全部的元素
push()在末尾添加若干元素 pop()把数组的最后的一个元素删除掉
unshift()在头部添加若干个元素 shift()把数组的第一个元素删掉
sort()对当前数组进行排序 直接修改当前数组的元素位置 按照默认顺序排序 也可以按照自己指定的顺序排序
reverse()把整个数组的元素掉个个 反转
splice()修改数组的万能方法 可以从指定的索引开始删除若干个元素 然后在从该位置添加若干元素
join()把当前数组的每个元素用指定的字符串连接起来 返回连接后的字符串
多维数组 数组的元素又是一个数组 可以形成多维数组。
对象
js 的对象是动态类型 你可以自由的给一个对象添加和删除属性 删除一个不存在的school属性也不会报错 检测是否拥有某一个属性 可以用in操作符 “key” in “value”; 如果用in判断一个属性是否存在 这个属性不一定是这个对象的,可能是对象继承得到的 toString定义在object对象中 所有对象都会在原型链上指向object 所以该对象也有toString属性 判断一个属性是否是他本身的 用hasOwnProperty()方法;
条件判断
js使用if(){}else{}
循环
for(){
}
for ..in..
while...
do ... while...
map 和set
map ()初始化map是一个二维数组 map的方法 set添加 has存在 get得到 delete删除 一个key只对应一个value值 多次对一个key放入value 后面的会把前面的冲掉
set() 也是key的集合 但不存储value 但key不能重复 所以 在set中 ,没有重复的key 重复元素在set中自动被过滤 add(key)方法可以添加元素到set中 可以重复添加 ,但没有效果 delete(key)可以删除元素
iterable
遍历数组可以用下标循环 遍历map和set就无法使用下标 iterable 类型的集合可以通过新的for 。。。of循环来遍历
for ...of ...循环遍历
for ...in..循环把额外添加的属性包括在内 但数组的length属性却不包括在内
for.. of ...循环只遍历了它的本身
forEach()
eg:
var a = ['A','B','C'];
a.forEach(function(element, index, array){
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
alert(element);
});
如果对某些眼熟不感兴趣 不要求参数必须一致 可以忽略