美文网首页技术干货
js 基础知识随笔

js 基础知识随笔

作者: 非小惰 | 来源:发表于2017-12-08 20:37 被阅读0次

    js 比较运算, 如果字符串和数值比较会先将字符串转为数值再进行比较

    如果是对象和字符串比较则会调用对象的valueOf()方法

    null==undefined

    js 中label使用 提高性能

    start:for(){

    for(){

       break start;

    }

    }

    js 垃圾回收

    1、标记清除

    先将全部变量进行标记,再取消现环境的变量及由变量引用的变量,再将没有取消的变量清除分配的内存

    2、引用计数

    在循环引用中容易造成内存溢出

    可手动执行垃圾回收

    collectGarbage

    确定占用最小的内存使页面拥有更好的性能,可以在变量使用后手动至为null

    js中 function和new function的区别

    new function返回的是对象,当function中有return的时候,new function返回的是对象,function根据return的类型不同返回的不同,如果返回的是对象则为对象如果返回的是字符串则为字符串,new function可获取this对象,function则不会如:

    var a ={"AAA":"ssss''}

    a.AAA与a["AAA"]区别,用中括号可以通过变量的方式访问如 var keyName = "AAA" ,a[keyName],或者当key为关键字或含有空格或.标识等时用中括号获取

    js数组

    Array.length 非只读,可以根据设置length动态添加或修改数组尾值

    数组栈的方式存储,后进先出 last in first out

    push 再数组后面添加新的元素

     pop 获取最后一个元素

    shift 获取第一个元素

    unshift 在数组最前面添加元素

    concat 复制原数组后创建新的数组

    slice 选择性赋值新建新的数组,传一个或两个参数,表明将要复制的原数组位置

    splice 非常强大的方法,对数组任意位置进行删除,插入,更换

    splice(0,2)删除数组前两个元素

    splice(2,0,"aa","bb","cc")在数组第二个位置后面,“删除0个元素”,并在后面添加“aa”“bb”“”“cc”元素

    splice(2,1,"aa","bb")在第二个元素后面,删除1个元素并插入“aa”“bb”

    数组的indexOf发现个有意思的,indexOf在查找匹配时遵循的是===,也就是说元素必须完全一致,包括了指向的地址如

    var ob = {"aa":"aa"};

    var arrTest1 =[ {"aa":"aa"}];

    var arrTest2 =[ ob];

    arrTest1.indexOf(ob);//-1

    arrTest2.indexOf(ob);//0

    数组的五大迭代方法 都是传递三个参数分别为,节点元素,节点位置,循环数组

    every(function(value,index,arr){

    //如果此函数对每一项都返回true;则every方法返回true

    })

    some(function(value,index,arr){

    //如果此函数对任意一项都返回true;则every方法返回true

    })

    forEach(function(value,index,arr){

    //每一项都执行该函数,无返回值

    })

    filter(function(value,index,arr){

    //过滤筛选将该函数返回true的值进行filter返回(数组返回)

    })

    map (function(value,index,arr){

    //将此返回的返回值生成新的数组有map返回

    })

    reduce 缩小数组方法,传递四个参数,第一个数组值,第二个数组值,循环的位置,数组对象

    每次迭代都会将结果作为第一个数组值传递到下一次迭代中

    function 两个属性,length 获取方法需要的参数个数

    String 三个方法

    slice(param1,param2)//第一个参数开始位置,第二个参数结束位置

    subString(param1,param2)//第一个参数开始位置,第二个参数结束位置

    substr(param1,param2)//第一个参数开始位置,第二个截取几个

    参数为负数时 slice将参数与字符串长度相加

    subString 将负数都转为0

    substr 将第一个参数与字符串长度相加,第二个参数转为0

    替换 js中的replace方法并没有像java中replaceAll方法想要达到全部替换可以用正则/g

    var hello = "hello word";

    hello.replace(/o/g,'w');

    也可以用一些特殊的字符序列

    $1表示最新匹配到的字符串

    var test = 'ABC,CBC,DBC';

    test.replace(/(.BC)/g,'都是BC($1)');

    replace第二个参数也可以传方法,方法捕获组的匹配项,参数位置,原字符串

    var str= 'abcdefg';

    str.replace(/[a d&]/g,function(match,pos,str){console.log(str+'原字符串'+match);return '替换为'})

    采用块级作用于可以降低闭包占用的内存问题,减少命名冲突及减少作用域链

    location.href

    location.assign

    location.replace区别

    href实际上也是调用的assign,href和assign会产生历史记录,replace不会产生历史记录,也防止了gohistory

    jQuery 对象和dom互相转化

    通过jQuery 获取对象var jele = $('#elem')与dom获取的对象不同,

    var delem = document.getElementById("elem"),因此两者不能互用对象属性及方法,

    两者互相转换方式如下

    jele[0] == delem

    $(delem) == jele

    h5 中innerHtml虽然很方便,但多次使用会降低性能,因为每次使用innerHtml或outHtml就会创建一个新的解析器

    在绑定事件中尽量用js绑定事件而不用html事件处理,这样可以避免当js没有加载完用户点击造成当js报错如

    <input id="btn_show" type="button" onclick="showMsg()">

    function showMsg(){

    }

    <input id="btn_show" type="button">

    $("#btn_show").click(function(){

            showMsg();

    })

    未完待续。。。。。。。

    相关文章

      网友评论

        本文标题:js 基础知识随笔

        本文链接:https://www.haomeiwen.com/subject/ypcebxtx.html