js代码问题

问题来源
https://github.com/h5bp/Front-end-Developer-Interview-Questions/tree/master/Translations/Chinese

问题:foo的值是什么?

  var foo = 10 + '20';

解:
foo变量成为了值为"1220"的字符串

问题:如何实现以下函数?

add1(2, 5); // 7
add2(2)(5); // 7

解:
function add1() { var j = 0; for (var i = 0; i < arguments.length; i++) { j += arguments[i]; } return j }
function add2(i) { return function (j) { return i + j } }
问题:下面的语句的返回值是什么?

"i'm a lasagna hog".split("").reverse().join("");

解:split()将字符串切成数组
reserve()将数组反转
join()将数组组成字符串
所以返回值是"goh angasal a m'i"

问题:window.foo的值是什么?

( window.foo || ( window.foo = "bar" ) );

问题:下面两个 alert 的结果是什么?

var foo = "Hello";
(function() {
  var bar = " World";
  alert(foo + bar);
})();
alert(foo + bar);

解:
第一个alert输出"Hello World"
第二个alert会报错,因为外部无法访问局部作用域的变量

问题:foo.length的值是什么?

var foo = [];
foo.push(1);
foo.push(2);

解:
foo.length的值为2,数组推入了2个数

问题:foo.x的值是什么?

var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};

解:
foo.x的值是undefined
foo的值为 {n: 2}

问题:下面代码的输出是什么?

console.log('one');
setTimeout(function() {
  console.log('two');
}, 0);
console.log('three');

解:
输出
one
three
two

你可能感兴趣的:(js代码问题)