JavaScript面试题51-60

JavaScript基础面试题51-60

每日坚持学10道题


51. 变量定义规则

[单选题]
下面符合一个有效的 javascript 变量定义规则的是?
A._ 2
B.with
C.a bc
D.2a


来自:前端工程师能力评估
答案:A


52. js 基本数据类型

[不定项选择题]
下面属于 javascript 基本数据类型的有?
A.字符串
B.数字
C.null
D.undefined


来自:腾讯春招 web 前端开发练习卷
答案:abcd
ECMAScript 中有 5 个简单数据类型(也成为基本数据类型): Undefined、Null、Boolean、 Number 和 String。还有一种复杂数据类型-Object,Object 本质上是由一种无序的名值对组成的。
ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。
谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。(但是很多人不把这个做为一个类型)。
JS数据类型:Number、String、Boolean、Null、undefined、object、symbol、bigInt。
Object 中包含了哪几种类型?其中包含了Data、function、Array等。这三种是常规用的。

53. 字符串连接

[单选题]
js 中字符串连接用那个比较高效?
A.a+=b
B.a = a+b
C.Array.join()
D.Array.push()


来自:前端工程师能力评估
答案:C
javascript 中字符串连接时用 Array.join()替换 string += "xx",换来几十倍的速度提升。

54. 作用域

[单选题]
请给出这段代码的运行结果( )

var bb = 1;
function aa(bb) {
	bb = 2;
    alert(bb);
};
aa(bb);
alert(bb);

程序的输出是什么?
A.1 1
B.1 2
C.2 1
D.2 2


来自:前端工程师能力评估
答案:C
  • ECMAScript 中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把一个值从一个变量复制到另外一个变量一样。基本类型的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样。
  • 在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即命名参数,或者用 ECMAScript 的概念来说,就是 arguments 对象中的一个元素)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。

55. 闭包问题

[单选题]
下面这个 JS 程序的输出是什么:

function Foo() {
    var i = 0;
    return function () {
        console.log(i++);
    }
}
var f1 = Foo(),
    f2 = Foo();
f1();
f1();
f2();

A.0 1 0
B.0 1 2
C.0 0 0
D.0 0 2


来自:来自:搜狐
答案:A


56. required的查找模块

[单选题]
在 文 件 /home/somebody/workspace/somemodule.js 中 第 一 行 引 用 了 一 个 模 块 :
require(‘othermodule‘),请问 required 的查找模块的顺序?
A. /home/somebody/workspace/mode_modules/othermodule/index.js
B. /home/somebody/workspace/mode_modules/othermodule. Js
C.CORE MODULES named othermodule
D./home/somebody/mode_modules/othermodule/index.js

A.C D A B
B.C B D A
C.C B A D
D.C D B A


来自:阿里巴巴
答案:C
  1. 首先,Node 在当前目录下查找 package.json(CommonJS 包规范定义的包描述文件),
    通过 JSON.parse()解析出包描述对象,从中取出 main 属性指定的文件名进行定位。如果文件
    缺少扩展名,将会进入扩展名分析的步骤。
  2. 而如果 main 属性制定的文件名错误,或者压根没有 package.json 文件,Node 会将
    index 当做默认文件名,然后依次查找 index.js、index.node、index.json.
  3. 如果在目录分析的过程中没有定位成功任何文件,则自定义模块进入下一个模块路
    径进行查找。如果模块路径数组都被遍历完毕,依然没有查找到目标文件,则会抛出查找失
    败异常。

    按照上面的思路,首先应该查找 package.json 文件,看看里面有没有核心模块,应该是
    C 最先,othermodule 不是核心模块,那么接着应该进入扩展名分析的步骤,就应该是查找
    othermodule. js,对应 B,紧接着就是以 index 为默认文件名,也就是 A,再接下来就是上一
    个文件目录 D 了,

57. js 延迟加载

[不定项选择题]
下面哪些方式可以用于 javascript 延迟加载?
A.通过 ajax 下载 js 脚本,动态添加 script 节点
B.通过监听 onload 事件,动态添加 script 节点
C.直接将 script 节点放置在之前,这样 js 脚本就会在页面显示出来之后再加载
D.使用 script 标签的 defer 和 async 属性


来自:来自:百度
答案:ABD

58. 加减运算符

[单选题]
如下代码输出的结果是什么:

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”);
    第一个+"2"中的加号是一元加操作符,+"2"会变成数值 2,因此 1+ +“2"相当于 1+2=3.
    然后和后面的字符串“2”相合并,变成了字符串"32”.
  3. console.log(“A”- “B”+“2”);
    “A”-“B"的运算中,需要先把"A"和"B"用 Number 函数转换为数值,其结果为 NaN,在剪
    发操作中,如果有一个是 NaN,则结果是 NaN,因此"A”-"B"结果为 NaN。
    然后和"2"进行字符串合并,变成了 NaN2.
  4. console.log(“A”- “B”+2);
    根据上题所述,“A”-"B"结果为 NaN,然后和数值 2 进行加法操作,在加法操作中,如
    果有一个操作数是 NaN,则结果为 NaN。

59. js 的域

[单选题]
下面有关浏览器中使用 js 跨域获取数据的描述,说法错误的是?
A.域名、端口相同,协议不同,属于相同的域
B.js 可以使用 jsonp 进行跨域
C.通过修改 document.domain 来跨子域
D.使用 window.name 来进行跨域


来自:阿里巴巴
答案:A
只要协议 、域名 、端口有任何一个不同, 都被当作是不同的域。

60. 作用域

[问答题]
阅读下列程序,写出 x,y,z 最后的值。

var x = 1, y = z = 0;
function add(n) {
    return n = n + 1;
}
y = add(x);
function add(n) {
    return n = n + 3;
}
z = add(x);

来自:百度
答案:B
参考:
x=1
y=4
z=4
js 的预编译会将 function add(n) { return n = n + 3; } 去覆盖前面的 add 方法。 var y = z = 0 这里面 z 变量会变为 window.z=0;这里需要注意的

今天的基础题完成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值