1. Math.round(x)
 
如果参数的小数部分大于 0.5,则舍入到下一个绝对值更大的整数;
如果参数的小数部分小于 0.5,则舍入到下一个绝对值更小的整数;
如果参数的小数部分恰好等于0.5,则舍入到下一个在正无穷(+∞)方向上的整数。注意,与很多其他语言中的round()函数不同,Math.round()并不总是舍入到远离0的方向(尤其是在负数的小数部分恰好等于0.5的情况下)
所以Math.round(11.5)=12,Math.round(-11.5)=-11,两者相加为1;

 2. 

1.
console.log(1+ "2"+"2");
做加法时要注意双引号,当使用双引号时,JavaScript认为是字符串,字符串相加等于字符串合并。
因此,这里相当于字符串的合并,即为122.

2.
console.log(1+ +"2"+"2");
第一个+"2"中的加号是一元加操作符,+"2"会变成数值2,因此1+ +"2"相当于1+2=3.
然后和后面的字符串“2”相合并,变成了字符串"32".

3.
console.log("A"- "B"+"2");
"A"-"B"的运算中,需要先把"A"和"B"用Number函数转换为数值,其结果为NaN,在剪发操作中,如果有一个是NaN,则结果是NaN,因此"A"-"B"结果为NaN。
然后和"2"进行字符串合并,变成了NaN2.

4.
console.log("A"- "B"+2);
根据上题所述,"A"-"B"结果为NaN,然后和数值2进行加法操作,在加法操作中,如果有一个操作数是NaN,则结果为NaN。

 3. js里有域的概念,函数外边的是全局值,在fun1函数里是局部域,可以读取外部变量,但是这个局部域里又重新定义,就不会再读取外部,覆盖

var val = 12;
function fun1(){
    console. log(val);
    var val = 20;
    console.log(val);
}
fun1();

//等价于
var val = 12;
function fun1(){
   var  val;
    console. log(val);  //undefined
    val = 20;
    console.log(val);  //20
}
fun1();
 

 

1. 数组去重 includes indexof ...new Set(arr)
2. s.charCodeAt(i)>255 查询某个字符的unicode编码
3.oNode2.contains 查询是否包含某个DOM节点
4. for..of和for...in区别 (in 遍历的是对象的键值,数组的下标,of遍历数组的值)
5. 校验邮箱格式 reg=/^([\w+\.])+@\w+([.]\w+)+$/;
6. nameArr[i].toUpperCase() 小写字母转换为大写
7.sName.split('') 字符串拆分 nameArr.join('') 字符串拼接
8. 字体加粗方法之一 strong标签
9. concat不改变原数组,需要用变量接收返回新数组
10. array.indexOf() array.lastIndexOf() 可以用来判断数组是否有重复元素
11. return 可以返回一个函数,包含在对象里

function count(start, end) {
  console.log(start);
  let interval = setInterval(()=>{
      if(start< end){
          ++start;
          console.log(start);
      }else{
          clearInterval(interval)
      }
  },100)
  let obj ={
    cancel:function(){
      clearInterval(interval)
    }
  }
  return obj;
}


12. 函数参数不定时,可以使用arguments对象遍历所有参数


13. 十进制转二进制 num.toString(2) 二进制转十进制 parseInt(str,2)
14. array.reduce() ??????
15. splice不可以用于字符串 slice可以用于字符串
16. 判断某对象属性是否在原型链上 obj.hasOwnProperty(key) ;(这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。)
17. 正则判断是否包含用.* (是否包含数字 reg = /.*\d.*/g; reg = /\d+/g; reg = /[0-9]/;)
18. 正则判断是否包含连续重复字符用 \1 (是否包含连续重复字母 /([a-zA-Z])\1/.test(str) 是否包含连续重复数字 /(\d)\1/.test(str) )
19 . 判断是否以元音字母结尾 i表示不区分大小写 $表示字符结尾 /[aeiou]$/gi.test(str)
20. 判断是否包含连续三个数字 并返回最先匹配的三个数字

//方法一
function captureThreeNumbers(str) {
    if(str.length<3){return false;}
    var reg=/\d{3}/g;
    var result=reg.test(str);
  if(result){
      return RegExp.lastMatch;
  }else{
      return false;
  }
}
//方法二
function captureThreeNumbers(str) {
    var result = str.match(/(\d{3})/)
    return result ? result[0] : false
}


21. 修改函数的this指向 f.bind(oTarget)

function speak(fn, obj) {
  return fn.apply(obj,[])
  //修改上下文是指  将this修改为obj,则函数中   this.greeting  变为  obj.greeting  其他变量同理
}


22. 格式化时间????

 

function formatDate(t,str){
  var obj = {
    yyyy:t.getFullYear(),
    yy:(""+ t.getFullYear()).slice(-2),
    M:t.getMonth()+1,
    MM:("0"+ (t.getMonth()+1)).slice(-2),
    d:t.getDate(),
    dd:("0" + t.getDate()).slice(-2),
    H:t.getHours(),
    HH:("0" + t.getHours()).slice(-2),
    h:t.getHours() % 12,
    hh:("0"+t.getHours() % 12).slice(-2),
    m:t.getMinutes(),
    mm:("0" + t.getMinutes()).slice(-2),
    s:t.getSeconds(),
    ss:("0" + t.getSeconds()).slice(-2),
    w:['日', '一', '二', '三', '四', '五', '六'][t.getDay()]
  };
    //$1 指正则替换的第一个参数
  return str.replace(/([a-z]+)/ig,function($1){return obj[$1]});
}

 

 

 

posted on 2021-04-27 16:40  巍MG  阅读(168)  评论(0)    收藏  举报