函数直接量调用函数时,创建一个对象:活动对象(专门保存本次调用中局部变量的对象),在作用域链对象中添加活动对象的引用
var 函数名=function(x,y){}
函数定义时,创建两个对象:函数对象,作用域链对象(记录函数可用作用域的对象)
调用函数后,
1.将作用域链中的引用出栈。2.活动对象回收
2类:
按值传递:将变量作为参数传递时,实际将变量中的值,复制一份参数变量。
分支结构:
if条件中自动隐式类型转换:Boolean();
switch中,表达式的值和case中的值,做的是===
循环结构:
for第一部分,可以同时初始化多个变量
for第三部分,可以同时迭代多个变量
for(var i=1,sum=0;i<=100;sum+=i,i++){}
数组:
程序=数据结构+算法;用什么样的数据结构存储数据?
创建:4种,var arr=[];var arr=[x,y...]; var arr=new Array(n);var arr=new Array(x,y...)
两个不限制,不限制元素个数,不限制元素类型。
截断数组,arr.length=n(<原数组.length)
1.索引数组
2.关联数组/Hash数组(存入元素时,使用hash算法生成尽量唯一的存储位置。读取元素时,使用hash算法直接计算出元素的存储位置。优势:避免遍历,查找速度快。)
数组API:
arr.toString();输出数组的每个元素,用逗号分隔。
arr.join("分隔符");
强调:相对于反复字符串拼接,利用数组拼接字符串是最好的做法。
连接和获取子数组(不改变原数组)
var newarr = arr.concat()
var subarr = arr.slice(start,end+1);含头不含尾,支持负数参数。
删除,插入,替换:
arr.splice(start,n);
arr.splice(start,0,x1,x2...);
arr.splice(start,n,x1,x2...);
颠倒:arr.reverse();
排序:arr.sort();
冒泡排序:
function bubleSort (arr) {for (var i = 0; i < arr.length; i++) {for (var j = i; j < arr.length; j++) {if(arr[j]>arr[j+1]){var temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}};};}
栈和队列:本质普通数组
栈:一端封闭,只能从另一端进出;FILO
尾:入栈arr.push()出栈arr.pop()
头:入栈arr.unshift()出栈arr.shift()
队列:从一段进入,另一端取出;FIFO
尾入:arr.push()
头出:arr.shift()
包装类型:封装原始类型数据,并提供对数据的操作方法。
为什么使用包装类型?原始类型数据本身无法执行任何操作。
生命周期:当原始类型数据调用方法时,程序会自动创建包装类型对象,封装要操作的数据。当方法调用之后,包装类型自动释放。
String API:String中的所有API,都不能修改原字符串,都只能返回新字符串。
1.大小写转换:
var str = str.toUpperCase();
var str = str.toLowerCase();
2.获取指定位置的字符:
var char = str.charAt(i)
var unicode = str.charCodeAt(i)
var char = str.fromCharCode(unicode)
3.查找关键字:4种
1.var i=str.indexOf("关键字"[,开始位置]);
找到返回下标,找不到返回-1
while((index=str.indexOf("no",index+1))!=-1){}
2.var i =str.lastIndexOf("关键字"[,开始位置]);
3.只关心有没有,且支持正则:var i=str.search(reg);返回值同indexOf;
4.获得所有关键字的内容或个数:
var arr = str.match(reg);
到不到返回null;
找到返回arr对象;
4.获取子字符串:3种
1.var substr = str.slice(start,end+1);支持正数和负数
2.var substr = str.substring(start,end+1);只支持正数
3.var substr = str.substr(start,n);
5.分割字符串:var arr = str.split("分隔符");
var chars = str.split("")
快速颠倒字符串中的字符
str.split("").reverse().join("")