web前端笔试题——JS
2017-05-21 21:56
483 查看
1.what is the value of foo?
var foo = 10 + '20'; // '1020'
2.How would you make this work?
add(2,5); // 7
add(2)(5); // 7
第一个就没必要解释了,主要是第二个
function add(x){
var sum = x;
var subFun = function (y){
sum += y;
return subFun;//这里之所以要返回subFun是为了更多的链式操作 比如add(2)(5)(3)...
}
return subFun; //执行add(2)将2存储在sum里面并且返回subFun方法供(5)执行。
}
3.What value is returned from the following statement?
'i'm a lasagna hog'.split("").reverse().join("");
//注:.split("")里面没有空格 如果把空字符串 ("") 用作 separator,那么
stringObject 中的每个字符(包括空格)之间都会被分割。所以结果是"goh angasal a m'i"
'i'm a lasagna hog'.split(" ").reverse().join("
"); //结果则是'hog
lasagna a i'm'
4.var a = [] 和 var a = new Array()性能的区别;(其实就没有区别) 点击打开链接
5.what is the outcome of the tow alerts below?
var foo = "Hello";
(function(){
var bar =" World";
alert(foo+bar); // Hello World
})();
alert(foo + bar); // 报错 bar undefined
6.What is the value of
var foo = {n:1};
var bar = foo;
foo.x = foo = {n:2};
/**
*个人总结这个题主要考了三个重点,一是引用赋值,二是js计算符的优先级,三是赋值表达式结合性
*var foo = {n:1};var bar = foo;所以这两行的结果是对象foo和bar存的都是同一个对象{n:1}的地址,关键在于第三行。由JS运算符的优先级可以看出对象的属性访问
*符'.'在这一行的优先级最高,所以foo.x最先计算,存下的是对{n:1}这个对象的X属性的引用。而由于JS赋值表达式是右结合,所以第三行就相当于是
*foo.x = ( foo = {n:2} ),也就是先进行foo = {n:2}这个赋值,所以此时的foo已经指向了{n:2}这个对象,再执行foo.x = foo,也就相当于给{n:1}这个对象的X属性赋值
*为{n:2},整个过程bar都指向的{n:1}这个对象,所以bar最终结果是{n:1,X:{n:2}},而foo为{n:2}。
**/
7.What dose the following code print?
1️⃣
console.log('one');
setTimeout(function()
{
console.log('two');
},0);
console.log('three'); // one three two
2️⃣
function foo(){
console.log('first');
setTimeout(function(){
console.log('second');
},5);
}
for(var i = 0; i < 1000; i++){
foo();
}
// 结果是全部打印first之后再打印的second。
//其实就是Js的单线程
var foo = 10 + '20'; // '1020'
2.How would you make this work?
add(2,5); // 7
add(2)(5); // 7
第一个就没必要解释了,主要是第二个
function add(x){
var sum = x;
var subFun = function (y){
sum += y;
return subFun;//这里之所以要返回subFun是为了更多的链式操作 比如add(2)(5)(3)...
}
return subFun; //执行add(2)将2存储在sum里面并且返回subFun方法供(5)执行。
}
3.What value is returned from the following statement?
'i'm a lasagna hog'.split("").reverse().join("");
//注:.split("")里面没有空格 如果把空字符串 ("") 用作 separator,那么
stringObject 中的每个字符(包括空格)之间都会被分割。所以结果是"goh angasal a m'i"
'i'm a lasagna hog'.split(" ").reverse().join("
"); //结果则是'hog
lasagna a i'm'
4.var a = [] 和 var a = new Array()性能的区别;(其实就没有区别) 点击打开链接
5.what is the outcome of the tow alerts below?
var foo = "Hello";
(function(){
var bar =" World";
alert(foo+bar); // Hello World
})();
alert(foo + bar); // 报错 bar undefined
6.What is the value of
foo.x?
var foo = {n:1};
var bar = foo;
foo.x = foo = {n:2};
/**
*个人总结这个题主要考了三个重点,一是引用赋值,二是js计算符的优先级,三是赋值表达式结合性
*var foo = {n:1};var bar = foo;所以这两行的结果是对象foo和bar存的都是同一个对象{n:1}的地址,关键在于第三行。由JS运算符的优先级可以看出对象的属性访问
*符'.'在这一行的优先级最高,所以foo.x最先计算,存下的是对{n:1}这个对象的X属性的引用。而由于JS赋值表达式是右结合,所以第三行就相当于是
*foo.x = ( foo = {n:2} ),也就是先进行foo = {n:2}这个赋值,所以此时的foo已经指向了{n:2}这个对象,再执行foo.x = foo,也就相当于给{n:1}这个对象的X属性赋值
*为{n:2},整个过程bar都指向的{n:1}这个对象,所以bar最终结果是{n:1,X:{n:2}},而foo为{n:2}。
**/
7.What dose the following code print?
1️⃣
console.log('one');
setTimeout(function()
{
console.log('two');
},0);
console.log('three'); // one three two
2️⃣
function foo(){
console.log('first');
setTimeout(function(){
console.log('second');
},5);
}
for(var i = 0; i < 1000; i++){
foo();
}
// 结果是全部打印first之后再打印的second。
//其实就是Js的单线程
相关文章推荐
- Web前端面试笔试题2——JS(1):函数调用(局部变量/全局变量)
- 腾讯Web前端(Js)笔试面试之谈
- 【自学笔记】web前端 javascript笔试题 关于各种==的比较,js隐式转换
- 2018网易校招笔试题——web前端开发
- Web前端:HTML~CSS~JS
- web前端之用js控制导航栏与副导航栏的切换
- Web前端-HF-HTML5Programming笔记-CH1&CH2 HTML5&JS&DOM
- 指尖下的js ——多触式web前端开发之一:对于Touch的处理
- web前端常用操作集(涵盖JS、HTML、CSS)
- 指尖下的js —— 多触式web前端开发之三:处理复杂手势
- 【web前端】团购类网站倒计时的js实现
- 指尖下的js ——多触式web前端开发之二:处理简单手势
- web前端js面试题及参考答案
- WEB前端 -- js函数与分号和感叹号
- WEB前端 -- JS函数的定义与调用方法
- 【web前端技术】八款JS(javascript)常用开发框架介绍及比较(web前端开发框架)
- 指尖下的js ——多触式web前端开发之一:对于Touch的处理
- 【web前端】仅使用JS做简单的选择题测评系统
- 2012 百度web前端笔试题
- web前端开发笔试集锦(javascript篇)