前端JS--牛客题

一、JS基础

包括js基本概念,数据类型,类型检测,逻辑和比较运算。

1.以下不属于 typeof 运算符返回值的是?

A. "string"
B. "function"
C. "object"
D. "null"

答案:D

题解:typeof 运算符返回变量或表达式的类型字符串,对一个值使用typeof操作符可能返回下列某个字符串:“undefined”——值未定义;“boolean”——值是布尔类型;“string”——值是字符串;“number”——值是数字或NaN;“object”——值是对象或null;“function”——值是函数

2.执行以下代码,错误的输出结果是:

A. 输入:typeof {"x":1} 输出:"object" 
B. 输入:typeof 1 输出:"number" 
C. 输入:typeof [{x:1}] 输出:"array" 
D. 输入:typeof NaN 输出:"number"

答案:C

题解:数组是对象类型

3.可以用typeof来判断的基本类型有:

A. undefined
B. null
C. array
D. object

答案:A

题解:

JavaScript的数据类型

基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

4.以下不属于JavaScript基本数据类型的是:

A. Boolean
B. undefined
C. Symbol
D. Array

答案:D

5.以下关于JavaScript中数据类型的说法错误的是:

A. 数据类型分为基本数据类型和引用数据类型
B. JavaScript一共有8种数据类型
C. Object是引用数据类型,且只存储于堆(heap)中
D. BigInt是可以表示任意精度整数的基本数据类型,存储于栈(stack)中

答案:C

题解:

        基本数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。

        引用数据类型同时保存在栈内存和堆内存中。引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

6.请选择结果为ture的表达式

A. null instanceof Object
B. null === undefined
C. null == undefined
D. NaN == NaN

答案:C

题解:

A:null表示为空的引用;instanceof 表示某个变量是否是某个对象的实例 ;虽然null的类型是object,但是null不具有任何对象的特性,即不能执行null.toString()、null.constructor等对象实例的默认调用。

 D:NaN表示的是非数字, 但是这个非数字也是不同的,因此,NaN 不等于 NaN,并且两个NaN永远不可能相等。

7.下列代码结果为 true 的是
A. Symbol.for('a') === Symbol.for('a')
B. Symbol('a') === Symbol('a')
C. NaN === NaN
D. {} === {}

答案:A

题解:

B:Symbol.for()与Symbol()这两种写法,都会生成新的 Symbol。它们的区别是,前者会被登记在全局环境中供搜索,后者不会。Symbol.for()不会每次调用就返回一个新的 Symbol 类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值。比如,如果你调用Symbol.for("cat")30 次,每次都会返回同一个 Symbol 值,但是调用Symbol("cat")30 次,会返回 30 个不同的 Symbol 值。

D:当我们需要访问引用数据类型 (对象 / 数组 / 函数) 的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。

{}实际保存的是指向堆内存中对象的一个指针,而另一个{}保存的是指向堆内存中另一个对象的一个指针;虽然这两个对象的值是一样的,但它们是独立的2个对象,占了2份内存空间;所以{}==={}为 false。

8.根据如下变量,下列表达式中返回值为true的是
var a = 1;
var b = [];
var c = '';
var d = true;

A. (a || b) === true
B. (b && c) === true
C. (c && d) === true
D. (d || a) === true

答案:D

题解:

JS中的||符号运算方法:

     只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。

     只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

总结:真前假后

JS中的&&符号运算方法:

     只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;

     只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;

总结:假前真后

在js逻辑运算中,0、“ ”、null、false、undefined、NaN都会判为false,其他都为true。

9. 1==true的返回值是true,这句话是否正确?
A. T
B. F

答案:A

 

题解:

如果有一个操作数是布尔值,先将其转换为数值再比较——false为0,而true为1

如果一个操作数是字符串,另一个操作数是数值,先将字符串转换为数值再比较

10.下面代码输出为true的是
A. console.log([] === []);
B. console.log(undefined == 0);
C. console.log(undefined == false);
D. console.log(false == '');

 答案:D

 

 题解:

布尔值和数字或字符串进行比较时,两边都转成数字再比较。

0, ' ', false 这三者进行值比较都是相等的,undefinde, null 除与自身相比外,与其他任何类型值进行比较都是不等的

11.浏览器环境下,以下打印结果为true的是
A. console.log("12" === 12)
B. console.log (NaN === NaN)
C. console.log (typeof(null) === typeof(window))
D. console.log ([1,2,3] === [1,2,3])

答案:A

12.以下表达式,正确的是
A. Number('a') == Number('a')
B. -1 == true
C. 3 + '2' === 5
D. ![] == ''

答案:D

题解:

如果有一方为字符串,就会认为是字符串拼接,结果为字符串

"!"为逻辑非,在操作非布尔值类型的数据时,会先将数据转换为布尔值然后再取反

为了使自己对基础的记忆加深和有效复习,对每道题考察的知识进行整理,希望也对你有所帮助😊

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值