今日刷题-js的call,apply为null,undefined的情况和日期的注意点
题目1
1 | function a(){ |
- 答案
- window
- 解析
- call,apply用于改变this的指向,并且可以让任意函数成为某一对象的方法进行调用
- 特别的是
- null或undefined时,将是JS执行环境的全局变量。浏览器中是window,其它环境(如node)则是global。
- ECMAScript5.1 15.3.4.4中有解释
题目2
1 | 有var d = new Date('2018-05-09'),可以设置为6月份的操作是?()(多选) |
答案
- 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 | //五月有31天,所以只需要大于31就是设置下一个月了(其实设置大于31的数字都可以设置到下一个月,只不过下一个是记号的区别而已~) |
题目3
1 | //说出A,B,C,D输出结果 |
答案
- 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。
- A : 做加法时要注意双引号,当使用双引号时,JavaScript认为是字符串,字符串相加等于字符串合并。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦洁小站-属于你我的小天地!
评论