日常整理系列——笔试刷题00002

1.RegExp对象的方法

JavaScript RegExp 对象有 3 个方法:test()、exec() 和 compile()。
(1) test() 方法用来检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回 true ,否则返回 false;
(2) exec() 方法用来检索字符串中与正则表达式匹配的值。exec() 方法返回一个数组,其中存放匹配的结果。如果未找到匹配的值,则返回 null;
(3)compile() 方法可以在脚本执行过程中编译正则表达式,也可以改变已有表达式。

注意:match是支持正则表达式的String对象的方法

2、JavaScript的基础数据类型统计

js七种数据类型:Sting  Object  null  undefined  Array  Boolean  Number
js五种基本类型:String Boolean Number null undefined
typeof六种返回格式:'string'  'number'  'object'  'function'  'boolean'  'undefined'

3、以下 javascript 代码,在浏览器中运行的结果是

答案:首先全部输出first,然后全部输出second

解析:首先js 是运行于单线程环境中,定时器作用是在规定时间内将事件加入执行队列,而加入的前提是当前事件队列没有任何东西

4.运行一下代码,y和z的结果最后为

 

正确答案为:4  4

解析:js里面没有函数重载的概念,在其他语言中(如java)java中,可以存在同名函数,只要传入的参数数量或者类型不同即可。在js中,定义了两个同名函数后,后面的函数会覆盖前面定义的函数。结合这道题来说,由于函数声明提升,所以函数声明会提前,由于存在同名函数,后面的add函数将覆盖第一个add函数,所以两次调用add()返回的值是相同的。也就是y,z都为4.

5.JavaScript 写在 HTML 代码中的标签部分,会导致页面在加载的时候自身被执行

这里比较疑惑,根据浏览器对 HTML 文件的解析是自上而下的,放在 内的 JS 是会被先请求的,但是解析优先级由于 JS 引擎比浏览器渲染引擎要高,所以会导致 JS 先加载完才把主权交给浏览器渲染引擎,如果 JS 很大,就会因此会引起页面卡顿,等 JS 加载完,这就是为什么要把 JS 放在 前的原因,网上很多例子说 代码放在 中要等请求才会加载,这点我去试了一下了,实际上代码的内容是被执行了的,只是那些对 DOM 的操作没有效果,为什么会没效果?这是因为主权还在 JS 引擎,页面的渲染还没交给渲染引擎,所以获取到的 DOM 节点是空的,因此才会没效果。

6.一下代码的结果为

var x = new Boolean(false);
if (x) {
  alert('hi');
}
var y = Boolean(0);
if (y) {
  alert('hello'); 
}

正确答案:‘hi’

解析:

  • if(x) 这里期望 x 是一个布尔类型的原始值,而 x 是一个对象,任何对象转为布尔值,都为得到 true切记!在 JS 中,只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false)。
  • 题目的第二部分,一定要注意 y = Boolean(0)而不是 y = new Boolean(0)。这两个有很大区别,用 new 调用构造函数会新建一个布尔对象,此处没有加 new,进行的是显示类型转换,正如上述第一条所说,0 转换布尔,结果为 false,所以此时 y 的值就是 false。如果加了 new,那么 y 就是一个 Boolean 类型的对象,执行 if(y) 时,对象转布尔,始终是 true,所以结果会与不加 new 的时候相反。

7.javascirpt中的数字在计算机内存储为8个Byte

解析:

关于Javascript中数字的部分知识总结:

1.Javascript中,由于其变量内容不同,变量被分为基本数据类型变量和引用数据类型变量。基本类型变量用八字节内存,存储基本数据类型(数值、布尔值、null和未定义)的值,引用类型变量则只保存对对象、数组和函数等引用类型的值的引用(即内存地址)。

2. JS中的数字是不分类型的,也就是没有byte/int/float/double等的差异。

 

你可能感兴趣的:(前端h5+css,JavaScript语言,笔试题库)