每个前端开发者必会的二十个JavaScript面试题
作者:Shelley 发布时间:[ 2017/3/28 11:37:21 ] 推荐标签:Javascript 面试题
问题14:下面代码输出什么?
var bar = true;
console.log(bar + 0);
console.log(bar + "xyz");
console.log(bar + true);
console.log(bar + false);
输出是
1
truexyz
2
1
下面给出一个加法操作表
Number + Number -> 加法
Boolean + Number -> 加法
Boolean + Boolean -> 加法
Number + String -> 连接
String + Boolean -> 连接
String + String -> 连接
问题15:下面代码输出什么?
var z = 1, y = z = typeof y;
console.log(y);
输出是 undefined。js中赋值操作结合律是右至左的 ,即从右边开始计算值赋值给左边的变量。
上面代码等价于
var z = 1
z = typeof y;
var y = z;
console.log(y);
问题16:下面代码输出什么?
var foo = function bar(){ return 12; };
typeof bar();
输出是抛出异常,bar is not defined。如果想让代码正常运行,需要这样修改代码:
var bar = function(){ return 12; };
typeof bar();
或者是
function bar(){ return 12; };
typeof bar();
明确说明这个下问题
var foo = function bar(){
// foo is visible here
// bar is visible here
console.log(typeof bar()); // Work here : )
};
// foo is visible here
// bar is undefined here
问题17:两种函数声明有什么区别?
var foo = function(){
// Some code
};
function bar(){
// Some code
};
foo的定义是在运行时。想系统说明这个问题,我们要引入变量提升的这一概念。
我们可以运行下如下代码看看结果。
console.log(foo)
console.log(bar)
var foo = function(){
// Some code
};
function bar(){
// Some code
};
输出为
undefined
function bar(){
// Some code
};
为什么那?为什么 foo 打印出来是 undefined,而 bar打印出来却是函数?
JavaScript在执行时,会将变量提升。
所以上面代码JavaScript 引擎在实际执行时按这个顺序执行。
// foo bar的定义位置被提升
function bar(){
// Some code
};
var foo;
console.log(foo)
console.log(bar)
foo = function(){
// Some code
};
原代码的输出合理解释了。
问题18:下面代码输出什么?
var salary = "1000$";
(function () {
console.log("Original salary was " + salary);
var salary = "5000$";
console.log("My New Salary " + salary);
})();
输出是
Original salary was undefined
My New Salary 5000$
这题同样考察的是变量提升。等价于以下代码
var salary = "1000$";
(function () {
var salary ;
console.log("Original salary was " + salary);
salary = "5000$";
console.log("My New Salary " + salary);
})();
问题19:什么是 instanceof 操作符?下面代码输出什么?
function foo(){
return foo;
}
console.log(new foo() instanceof foo);
instanceof操作符用来判断是否当前对象是特定类的对象。
如
function Animal(){
//或者不写return语句
return this;
}
var dog = new Animal();
dog instanceof Animal // Output : true
但是,这里的foo定义为
function foo(){
return foo;
}
所以
// here bar is pointer to function foo(){return foo}.
var bar = new foo();
所以 new foo() instanceof foo 返回 false
问题20: 如果我们使用JavaScript的”关联数组”,我们怎么计算”关联数组”的长度?
var counterArray = {
A : 3,
B : 4
};
counterArray["C"] = 1;
其实答案很简单,直接计算key的数量可以了。
Object.keys(counterArray).length // Output 3
面试题参考自: 21 Essential JavaScript Interview Questions | Codementor
本文给出的面试题答案只是很多合理答案中的几个,可能会不全面,欢迎大家补充。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
JavaScript有这几种测试分类JavaScript深入之创建对象的多种方式以及优缺点Prepack?JavaScript代码优化工具2017值得一瞥的JavaScript相关技术趋势JavaScript深入之从原型到原型链在Node.js中看JavaScript的引用JavaScript 基础阶段测试题(含答案)说说如何用JavaScript实现一个模板引擎JavaScript四种调用模式和this示例介绍一道面试题引发的对JavaScript类型转换的思考JavaScript与Java、PHP的比较怎样写一个能同时用于Node和浏览器的JavaScript包?JavaScript 测试?单元vs功能vs集成测试Javascript项目单元测试小结简单易操作的跨浏览器JavaScript单元测试解决方案编写可测试的JavaScript代码
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南