ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS刷题-1

2022-06-02 01:02:00  阅读:98  来源: 互联网

标签:val JS write test var new document 刷题


牛客刷题

1、new Boolean()问题

点击查看代码
<html>
  <body>
        <script type="text/javascript">
            
            var test=new Boolean();
            document.write(test);
            document.write("<br />");

            var test=new Boolean(0);
            document.write(test);
            document.write("<br />");

            var test=new Boolean(null);
            document.write(test);
            document.write("<br />");

            var test=new Boolean("");
            document.write(test);
            document.write("<br />");

            var test=new Boolean(NaN);
            document.write(test);
            document.write(" <br />");

    </script>
  </body>
</html>;

上述代码的输出结果为:false false false false false

题解:三年级小李子

1) 当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。
2) 如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成一个原始的布尔值,并且返回这个值。
3) 注释:如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串 "false")

2、变量定义

点击查看代码
var name="World!";
(function(){
    var name;
    if(typeof name=== 'undefined'){
        name='Jack';
        console.log('Goodbye'+name);
    }
    else{
        console.log('hello'+name);
    }
})();

执行后弹出的值为:Goodbye Jack

函数体内定义了name但未赋值,即为undefined,接着if语句判断,在函数体内已经有name,就不会用到外部的定义全局变量,然后if判断成立,赋值后console.log

3、变量提升 (错题)

点击查看代码
var val = 12;
function fun1(){
    console. log(val);
    var val = 20;
    console.log(val);
}
fun1();

输出:undefined 20

官方解析:
当局部变量和全局变量同时存在时,局部变量的优先级更高。在函数fun1内部,由于存在变量提升,会先使用var声明局部变量val,而变量的赋值并不会跟着一起提升,接着使用console.log()输出val,由于val变量已声明但未赋值,故输出结果为undefined,然后再对val进行赋值,其值为20,最后再次输出val,输出结果为20

4、this对象的理解 (错题)

  1. 非箭头函数,在不改变this指向的前提下,this总是指向函数的直接调用者
  2. 如果有new关键字,this指向new出来的那个对象
  3. this总是指向函数的非间接调用者
  4. IE中attachEvent中的this总是指向全局对象Window

3错在“总是”,apply和call可以改变this的指向

5、正则表达式 (一窍不通)

关于身份证号,以下正确的正则表达式为

点击查看代码
isIDCard=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;

isIDCard=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/;

题解:KissTheFire

点击查看代码
^:起始符号,^x表示以x开头
$:结束符号,x$表示以x结尾
[n-m]:表示从n到m的数字
\d:表示数字,等同于[0-9]
X{m}:表示由m个X字符构成,\d{4}表示4位数字

15位身份证的构成:六位出生地区码+六位出身日期码+三位顺序码
18位身份证的构成:六位出生地区码+八位出生日期码+三位顺序码+一位校验码

C选项的构成:
[1-9]\d{5}:六位出生地区码,出生地区码没有以0开头,因此第一位为[1-9]。
[1-9]\d{3}:八位出生日期码的四位年份,同样年份没有以0开头。
((0\d)|(1[0-2])):八位出生日期码的两位月份,| 表示或者,月份的形式为0\d或者是10、11、12。
(([0|1|2]\d)|3[0-1]):八位出生日期码的两位日期,日期由01至31。
\d{4}:三位顺序码+一位校验码,共四位。
A选项的构成:
[1-9]\d{7}:六位出生地区码+两位出生日期码的年份,这里的年份指后两位,因此没有第一位不能为0的限制,所以合并了。
后面的与C选项类似了。

标签:val,JS,write,test,var,new,document,刷题
来源: https://www.cnblogs.com/anixte/p/16336282.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有