javascript的小问题

  1. swicth语句中变量与case子语句是 ===进行匹配
  2. 严格模式 :引入 use strict指令触发,常见限制
    1. 变量必须先声明再使用
    2. 函数默认this指向undefind 而不是window
    3. delete运算符删除不可删除的属性会报错
    4. 禁止使用0开头的8进制;
    5. 禁止使用with语句
  3. null和undefined的区别
    1. undefined表示未定义的值,null表示一个空对象
    2. 通过Number转化,undefined会变成NaN,null会变成0
  4. typeof和instanceof的区别
    1. typeof用于检测基本类型,instanceof用于检测对象之间的关系
    2. typeof执行完后会返回当前类型的小写字符串。instanceof返回的是布尔类型
    3. typeof只需要一个操作数,instanceof需要两个,且左操作数不能是基本类型,必须是对象,右操作数必须是函数
  5. 对typeof检测类型为Object可以进一步检测具体类型,可使用基础对象Object原型上的toString().call进一步检测
  6. void会忽略操作数的计算结果返回undefined,NaN表示一个不是数字的数值
  7. in操作符可以检测属性是否在对象中,可以是自身的也可以是继承的
  8. hasOwnProperty()可以检测属性是否在自身对象中,不考虑继承
  9. isPrototypeOf()用于检测该对象是否存在于指定的原型链中
  10. instanceof用于检测构造方法的原型是否在指定对象的原型链中
  11. eval()可以执行一段字符串中的脚本,也就是将字符串编译
  12. 将in和hasOwnProperty组合使用可以检测一个属性是否是继承属性
  13. 数组扁平化
    var arr=[1,[2,[3,4],5],6]
    console.log(arr);
    arr=arr.toString()
    console.log(arr.split(','));
    arr=arr.split(',').map((v1,index,array)=>{
      return +v1
    })
    console.log(arr);
  14. 函数声明可以变量提升、
  15. 日期函数相关操作
    1. 两个日期对象相减得到时间间隔的毫秒数
  16. RegExp对象
    1. test(字符串),判断正则表达式对象和字符串是否匹配,返回布尔值
    2. 当正则表达式包含g的时候,每次调用test方法都会更新lastIndex的值,也就是检索的起始位置
  17. //替换占位符
    //如我的名字{0} ,和”mary“
    function strFormat(format,arr){
        if(argument.length<2)
              return format
        for(var key in arr){
             var value =arr[key];
             if ( undefined!= value) {
                     format=format.replace( new RegExp ('\\{"+key+"\\}","gm"),value)
              }
        }
    }        
  18. 数组内置方法:
    1. sort();排序,可传递回调函数按指定规则排序,回调函数参数 x y,返回值大于0,x会移动到y后面
    2. reduce();缩减数组,将数组元素计算成一个值返回,回调函数接受4个参数:累计值、当前元素、当前元素索引和原始数组
    3. splice();用于删除插入或替换,第一参数表示开始位置,第二参数表示操作元素数量,第三参数开始表示要导入的值,改变原数组,返回被删除的元素
    4. slice();用于提取元素,参数为起始位置和结束位置
    5. map();用于迭代修改元素的值,传递回调函数参数表示元素的值和元素下标,返回值会更新元素值
    6. indexOf();找到元素的起始位置;lastIndexOf()则反向查找
  19. 数组去重方法:假如是多重数组,则先使用toString扁平化,再通过创建辅助对象和新数组,遍历旧数组,利用对象属性的唯一性,可以做到map的效果,把没有遇见的数组元素加入新数组
  20. 函数预编译问题:首先函数内形参和所有变量声明,默认undefined。实参于形参相统一,也就是带入实参。函数内的函数声明(区分函数表达式),会覆盖变量声明。按顺序执行函数代码。
posted @ 2021-04-07 15:14  浪波激泥  阅读(62)  评论(0编辑  收藏  举报