while vs. do while vs. for
while:不确定循环次数,或者循环变量的变化规律不固定
do while:第一次条件即使不满足,也要执行一次
for:循环次数确定,循环变量变化规律固定
程序=数据结构+算法。良好的数据结构,可以极大提高程序的执行效率!
对象:凡是存储在堆中的,都是对象!
使用引用类型的对象:
使用变量,等效于使用对象的地址;使用对象地址,等效于使用对象本身
API:已经实现的方法!可以直接调用!
null vs undefined:
null专用于主动释放对象!
undefined:专用于自动初始化任何未赋值的变量
垃圾回收:js引擎自动销毁不再被引用的对象!
垃圾回收程序:随js程序运行而后台同时运行
只要对象还有变量引用,就不回收。
数组(array):
存储:连续存储多个数据的存储空间
使用:相当于多个变量的集合
如何使用:创建,初始化,访问
创建:数组都是用[]创建出来的。
2个不限制:1. 不限制元素个数!2. 不限制元素数据类型
*数组是引用类型的对象*
var arr=new Array(num);
new:要在堆中开辟空间!
Array:ECMAScript标准中的内置类型
new Array:在堆中创建一个数组类型的存储区域
(num):初始创建num个元素
数组中,undefined输出时,变为一个空字符
null:一个变量没有指向任何对象
何时使用null:主动释放对象!主动释放的对象不能被找回
Array API:
arr.length属性:数组中的元素个数
访问任意数组的最后一个元素:arr[arr.length-1]
js中数组可根据程序需要,“自动扩容”,保证程序正常执行
如果length属性值>旧值,会扩容;反之,缩容(截断)
栈中的变量 生命周期:和堆完全不同!
结论:局部变量的生命周期和所在方法的作用域环境栈有关
作用域创建,局部变量一同创建
作用域结束,局部变量一同消失
x.toString()方法:
任何对象都有toString方法。
默认用,分隔每个元素 将任何对象转为字符串
x.valueOf()方法:同toString()
var str=arr.join("分隔符"):将数组转为字符串。可自定义分隔符!
用法:将字符拼接为单词或句子 chars.join("")
var newArr=arr.concat(元素值,[数组],...):将参数拆散成单个元素,追加到数组中。
*不会修改原数组,只能返回新数组对象*
var subArr=arr.slice(start,end+1):
截取数组下标从start开始,到end位置的元素,生成新的子数组对象。
*含头不含尾*
arr.splice:删除!插入!替换!
删除元素:arr.splice(start,count);
替换元素:arr.splice(start,count,值1,值2,...)
插入元素:arr.splice(start,0,值1,值2,...)
返回每次删除元素组成的新数组
splice:*直接修改原数组*!返回被删除的元素
arr.reverse():颠倒所有数组元素
arr.sort():默认升序排列。默认都转为字符串排序!
数组遍历:对数组中每个元素执行相同的操作
for(var i=0;i<arr.length;i++){
arr[i]-->当前元素
}
二维数组:数组的元素又是另一个数组对象!
关联数组:数组下标可以自定义名称!Key/value对儿
for in:专门遍历关联数组用的!
for (var key in arr){
//从第一个元素开始,将元素的key赋值给临时变量key
arr[key]-->当前正在遍历的元素的值(value)
}
关联数组直接量定义方式:
强调:大括号 {"key1":"value1","key2":"value2",...}
判断字符的种类:unicode范围:
48-57:0-9 数字字符
65-90:A-Z 大写字母
97-122:a-z 小写字母
19968-40869:汉字
什么是模式匹配:可以设置查找或替换的规则!
何时使用模式匹配:要查找的关键字可能发生有规律的变化。
JavaScript 知识点总结-3
最新推荐文章于 2018-09-06 19:26:40 发布