JavaScript核心知识点总结

函数直接量
 var 函数名=function(x,y){}
函数定义时,创建两个对象:函数对象,作用域链对象(记录函数可用作用域的对象)
调用函数时,创建一个对象:活动对象(专门保存本次调用中局部变量的对象),在作用域链对象中添加活动对象的引用

调用函数后,

    1.将作用域链中的引用出栈。
    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)
   2类:
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("")








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值