题目1

1
2
3
4
function a(){
console.log(this);
}
a.call(null);//输出结果为?
  • 答案
    • window
  • 解析
    • call,apply用于改变this的指向,并且可以让任意函数成为某一对象的方法进行调用
    • 特别的是

题目2

1
2
3
4
5
var d = new Date('2018-05-09'),可以设置为6月份的操作是?()(多选)
A: d.setMonth(7);
B: d.setMonth(6);
C: d.setMonth(5);
D: d.setDate(40);
  • 答案

    • C与D
  • 解析

    • C : js当中的月份是从0开始算的,0代表1月,11代表12月,所以设置的时候需要减少1,所以d.setMonth(5)为设置6月份

    • D : 看看菜鸟教程当中的setDate(day)解释

      参数描述
      day必需。
      表示一个月中的一天的一个数值(1 ~ 31
      0 为上一个月的最后一天
      -1 为上一个月最后一天之前的一天
      如果当月有 31 天
      32 为下个月的第一天
      如果当月有 30 天
      32 为下一个月的第二天
1
2
3
4
5
//五月有31天,所以只需要大于31就是设置下一个月了(其实设置大于31的数字都可以设置到下一个月,只不过下一个是记号的区别而已~)
var time = new Date("2018-05-09");
console.log(`${time.getFullYear()}${time.getMonth()+1}${time.getDate()}日`);//2018年5月9日
time.setDate(42);
console.log(`${time.getFullYear()}${time.getMonth()+1}${time.getDate()}日`);//2018年6月12日

题目3

1
2
3
4
5
//说出A,B,C,D输出结果
A: console.log(1+ "2"+"2");
B: console.log(1+ +"2"+"2");
C: console.log("A"- "B"+"2");
D: console.log("A"- "B"+2);
  • 答案

    • 122 => ( 如果typeof (1+ “2”+”2”) 那么输出结果为”string” )
    • 32 => ( 如果typeof (1+ +”2”+”2”) 那么输出结果为”string” )
    • NaN2
    • NaN
  • 解析

    • A : 做加法时要注意双引号,当使用双引号时,JavaScript认为是字符串,字符串相加等于字符串合并。
      因此,这里相当于字符串的合并,即为122.
    • B : 第一个+”2”中的加号是一元加操作符,+”2”会变成数值2,因此1+ +”2”相当于1+2=3.
      然后和后面的字符串“2”相合并,变成了字符串”32”.
    • C : 第一个+”2”中的加号是一元加操作符,+”2”会变成数值2,因此1+ +”2”相当于1+2=3.
      然后和后面的字符串“2”相合并,变成了字符串”32”.
      • 同样的操作还有 * “1” => 相当于把字符串1转化为数字1
    • “A”-“B”的运算中,需要先把”A”和”B”用Number函数转换为数值,其结果为NaN,在减发操作中,如果有一个是NaN,则结果是NaN,因此”A”-“B”结果为NaN。
      然后和”2”进行字符串合并(这里的+为什么是合并那是因为加数为字符串类型),变成了NaN2.
    • D :”A”-“B”结果为NaN,然后和数值2进行加法操作,在加法操作中,如果有一个操作数是NaN,则结果为NaN。