1、声明定义一个函数Fn,那么Fn.prototype是一个什么?
- object
- function
- Fn
- null
2、Object.proto.__proto__指向什么?
- Object
- Function
- Object.prototype
- null
3、声明定义一个函数Fn.prototype.contructor指向什么?
- Object
- Fn
- Object.prototype
- null
4、程序执行p.getAge(),返回什么?
function Person() {
this.age = 20;
}
Person.prototype.age = 30;
Person.prototype.getAge = function () {
return this.age;
};
var p = new Person();
- 20
- 30
- null
- undefined
5、执行obj.getName(),返回什么?
var name = 'cat';
var obj = {
name: 'dog',
getName: function () {
this.name = 'mouse';
return (function () {
return this.name;
})();
}
};
- cat
- dog
- mouse
- undefined
6、连续三次调用add(),最后一次调用输出的结果是什么?
var add = (function () {
return function () {
var counter = 0;
return (counter += 1);
};
})();
- 0
- 1
- 3
- 执行会报异常
7、直接调用sayAnimal(),控制台会输出什么?
var animal = "dog";
function sayAnimal() {
animal = "cat";
function animal() {}
console.log(animal.toString());
}
- dog
- cat
- function animal() {}
- 执行会报异常
8、ES5环境中运行,程序输出什么?
var func1 = function () {
return true;
};
var func2 = function () {
return false;
};
(function () {
if (func2()) {
func1 = function () {
return false;
};
function func2() {
return ture;
};
}
})();
console.log(func1());
- true
- false
- undefined
- 执行会报异常
9、在ES5环境中运行,程序会输出什么?
var func1 = function () {
return ture;
};
var func2 = function () {
return false;
};
(function () {
if (func2()) {
func1 = function () {
return false;
};
var func2 = function () {
return true;
};
}
})();
- true
- false
- undefined
- 执行会报异常
10、程序输出什么?
func1();
func2();
console.log(innerVar1);
console.log(innerVar2);
function func1() {
innerVar1 = 1;
}
function func2() {
innerVar2 = 2;
}
- 会报“innerVar1 is not defined”
- 会报“func1 is not defined”
- 会先输出1,再报“innerVar2”
- 会正常执行,输出:1,2
11、关于__proto__和prototype属性,正确的是什么?(多选)
- 每个对象都有__proto__属性
- 只有普通对象才有__proto__属性
- 每个对象都有prototype属性
- 只有函数对象才有prototype属性
12、关于instanceof运算符,哪些表达式返回true?(多选)
- ( new Object() )insanceof Object
- Function instanceof Function
- Object instanceof Function
- Function.prototype instanceof Object
- Object.prototype instanceof Object
13、javascript运行的执行上下文,分哪几种?(多选)
- 全局上下文:代码默认运行的环境,最先回进入到全局环境中
- 函数上下文:在函数的局部环境中运行的代码上下文
- 块级上下文:在代码块中运行的代码上下文
- Eval上下文:在eval()函数中运行的代码上下文
14、关于js作用域,哪些是正确的?(多选)
- JS采用的是静态作用域,也叫词法作用域
- JS作用域分全局作用域、函数作用域和块级作用域
- 全局作用域下的变量、对象、函数等可以被任何地方的代码访问
- 在块语句内部定义的变量会保留在他们已经存在的作用域内
- 使用自执行的匿名函数包裹块语句构建作用域,也叫私有作用域
15、哪些实现了闭包?(多选)
function func1(){
for(var i=0;i<5;i++) {
setTimeout(function () {
console.log(i);
},3*1000);
}
}
func1();
function func2() {
var counter = 0;
setTimeout(function () {
console.log(counter);
},3*1000);
}
func2();
function func3 () {
var counter = 0;
function getCounter(counter) {
return counter++;
}
return getCounter;
}
func3()(2);
function func4 () {
var counter = 0;
function addCounter() {
return counter++;
}
addCounter();
}
func4();
16、执行代码,正确的是?(多选)
var counter = 100;
function fn() {
var counter = 0;
fn.count = function () {
console.log(++counter);
};
window.print = function () {
console.log(--counter);
};
function plus() {
console.log(++counter);
}
return plus;
}
var foo = fn();
foo();
print();
fn.count();
foo.count();
- 代码执行完18行后,控制台输出1
- 代码执行完19行后,控制台输出-99
- 代码执行完20行后,控制台输出1
- 代码执行完21行后,控制台输出2
17、所有函数对象的__proto__都指向Function.prototype,它是一个空函数(Empty function)
是
否
18、除了Object.prototype,所有对象的__proto__都指向其构造器的prototype
是
否
19、所有函数对象的prototype,都是普通对象
是
否
20、JS中作用域分去哪聚作用域、函数作用域和块级作用域
是
否
21、以下代码执行print函数,控制台输出undefined
function print() {
if(true) {
var greeting = "Hello world";
}
console.log(greeting);
}
是
否
22、每当一个函数被调用时就会为该函数创建一个执行上下文,同时与之关联的会有一个变量对象,该上下文中的所有变量和函数全都保存在这个对象中
是
否
23、代码块执行到11行,foo()执行完后,foo()的执行上下文环境内的x变量就会被释放掉
function foo() {
var max = 10;
return function bar(x) {
if (x > max) {
console.log(x);
}
}
}
var fa = foo(),
max = 100;
fa(15);
是
否
24、在闭包使用过程中,在闭包函数退出前,通过删除不使用的局部变量,可以有效防止可能造成的内存泄漏
是
否