牛客网笔试题错题总结

版权声明: https://blog.csdn.net/lhjuejiang/article/details/82657675

1、关于history对象的属性和方法的描述

  • length      返回浏览器历史列表中的URL数量
  • back()      加载 history 列表中的前一个URL
  • forward() 加载 history 列表中的下一个URL
  • go()         加载history列表中的某个具体页面。

2、H5新增的表单元素

 

datalist 元素规定输入域的选项列表。 keygen 元素的作用是提供一种验证用户的可靠方法。 output 元素用于不同类型的输出

3、

以下元素都是短语元素。虽然这些标签定义的文本大多会呈现出特殊的样式,但实际上,这些标签都拥有确切的语义。

我们并不反对使用它们,但是如果您只是为了达到某种视觉效果而使用这些标签的话,我们建议您使用样式表,那么做会达到更加丰富的效果。

<em> 把文本定义为强调的内容。
<strong> 把文本定义为语气更强的强调的内容。
<dfn> 定义一个定义项目。
<code> 定义计算机代码文本。
<samp> 定义样本文本。
<kbd> 定义键盘文本。它表示文本是从键盘上键入的。它经常用在与计算机相关的文档或手册中。
<var> 定义变量。您可以将此标签与 <pre> 及 <code> 标签配合使用。
<cite> 定义引用。可使用该标签对参考文献的引用进行定义,比如书籍或杂志的标题。

4、看下面程序的显示结果是什么?

var x = new Boolean(false);
if (x) {
  alert('hi');
}
var y = Boolean(0);
if (y) {
  alert('hello'); 
}
A、hi      B、hi hello      C、hello   D、不显示

正确答案:A

解析:此题考查的是 JS 的类型转换:

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 的时候相反。

5、下面关于块内声明函数的做法哪些是正确的?

正确答案: B 

if (x) {  function foo() {}}
if (x) {  var foo = function() {}}
if (x) {  foo = function() {}}
ECMAScript明确的规范了块内函数,javascript实现了这个规范

解析:

不要在块内声明一个函数(严格模式会报语法错误)。如果确实需要在块中定义函数,可以使用函数表达式来声明函数。

更多解释请看:http://amazeui.org/getting-started/javascript-guide?_ver=2.x

6、如下代码输出的结果是什么:

console.log(1+ "2"+"2");

console.log(1+ +"2"+"2");

console.log("A"- "B"+"2");

console.log("A"- "B"+2);
 
A、122 122 NaN NaN
B、122 32 NaN NaN2
C、122 32 NaN2 NaN
D、122 32 NaN2 NaN2

正确答案:C

 解析:

1、console.log(1+ "2"+"2");

做加法时要注意双引号,当使用双引号时,JavaScript认为是字符串,字符串相加等于字符串合并。
因此,这里相当于字符串的合并,即为122.

2、console.log(1+ +"2"+"2");

"A"-"B"的运算中,需要先把"A"和"B"用Number函数转换为数值,其结果为NaN,在剪发操作中,如果有一个是NaN,则结果是NaN,因此"A"-"B"结果为NaN。第一个+"2"中的加号是一元加操作符,+"2"会变成数值2,因此1+ +"2"相当于1+2=3.
然后和后面的字符串“2”相合并,变成了字符串"32".

3、console.log("A"- "B"+"2");

然后和"2"进行字符串合并,变成了NaN2.

4、console.log("A"- "B"+2);

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

猜你喜欢

转载自blog.csdn.net/lhjuejiang/article/details/82657675