- 写出下面代码输出的结果
console.log(a);//=>undefined
var a = 12;//全局下声明变量a,并且给全局window添加了一个a的属性,值为12。
a = 13;//给全局的a属性重新赋值a
console.log(a);//=>13
console.log(a);//=>直接报错,因为全局下没有声明过a这个属性。Uncaught ReferenceError: a is not defined
at <anonymous>:1:13
let a = 12;
a = 13;
console.log(a);
console.log(a);//=>报错,全局下没有a这个属性Uncaught ReferenceError: a is not defined
a = 13;
console.log(a);
- 写出下面代码输出的结果
var a = 12;
var a = 13;
console.log(a);//=>13,声明了一个全局变量a,并且先后赋值12和13
let a = 12;//=>报错,let不允许重复声明,词法解析阶段就会报错Uncaught SyntaxError: Identifier 'a' has already been declared
let a = 13;
console.log(a);
- 写出下面代码输出的结果
console.log(a, b);
var a = 12,
b = 12;
function fn() {
console.log(a, b);
var a = b = 13;
console.log(a, b);
}
fn();
console.log(a, b);
- 写出下面代码输出的结果
console.log(a, b, c);
var a = 12,
b = 13,
c = 14;
function fn(a) {
console.log(a, b, c);
a = 100;
c = 200;
console.log(a, b, c);
}
b = fn(10);
console.log(a, b, c);
- 写出下面代码输出的结果
console.log(a);
if(!('a' in window)){
var a = 13;
}
console.log(a);
- 写出下面代码输出的结果
fn();
function fn(){ console.log(1); }
fn();
function fn(){ console.log(2); }
fn();
var fn = function(){ console.log(3); }
fn();
function fn(){ console.log(4); }
fn();
function fn(){ console.log(5); }
fn();
- 写出下面代码输出的结果
f = function () {return true;}
g = function () {return false;}
~function () {
if (g() && [] == ![]) {
f = function () {return false;}
function g() {return true;}
}
}();
console.log(f());
console.log(g());
- 写出下面代码输出的结果
console.log(typeof a);
console.log(typeof a);
let a;
- 写出下面代码输出的结果
var ary = [12, 23];
function fn(ary) {
console.log(ary);
ary[0] = 100;
ary = [100];
ary[0] = 0;
console.log(ary);
}
fn(ary);
console.log(ary);
- 写出下面代码输出的结果(如何查找上级作用域和堆栈内存释放问题)
var n = 1;
function fn() {
var n = 2;
function f() {
n--;
console.log(n);
}
f();
return f;
}
var x = fn();
x();
console.log(n);
var i = 5;
function fn(i) {
return function (n) {
console.log(n + (++i));
}
}
var f = fn(1);
f(2);
fn(3)(4);
fn(5)(6);
f(7);
console.log(i);
var i = 20;
function fn() {
i-=2;
return function (n) {
console.log((++i)-n);
}
}
var f=fn();
f(1);
f(2);
fn()(3);
fn()(4);
f(5);
console.log(i);
=======================================================================
1、
console.log(a);
var a=12;
function fn(){
console.log(a);
var a=13;
}
fn();
console.log(a);
/*
A、undefined 12 13
B、undefined undefined 12
C、undefined undefined 13
D、有程序报错
*/
2、
console.log(a);
var a=12;
function fn(){
console.log(a);
a=13;
}
fn();
console.log(a);
/*
A、undefined 12 13
B、undefined undefined 12
C、undefined undefined 13
D、有程序报错
*/
3、
console.log(a);
a=12;
function fn(){
console.log(a);
a=13;
}
fn();
console.log(a);
/*
A、undefined 12 13
B、undefined undefined 12
C、undefined undefined 13
D、有程序报错
*/
4、
var foo=1;
function bar(){
if(!foo){
var foo=10;
}
console.log(foo);
}
bar();
/*
A、1
B、10
C、undefined
D、报错
*/
5、无需画图
var n=0;
function a(){
var n=10;
function b(){
n++;
console.log(n);
}
b();
return b;
}
var c=a();
c();
console.log(n);
/*
A、1 1 1
B、11 11 0
C、11 12 0
D、11 12 12
*/
6、
var a=10,b=11,c=12;
function test(a){
a=1;
var b=2;
c=3;
}
test(10);
console.log(a);
console.log(b);
console.log(c);
/*
A、1 11 3
B、10 11 12
C、1 2 3
D、10 11 3
*/
7、
if(!("a" in window)){
var a=1;
}
console.log(a);
/*
A、1
B、undefined
C、报错
D、以上答案都不对
*/
8、
var a=4;
function b(x,y,a) {
console.log(a);
arguments[2]=10;
console.log(a);
}
a=b(1,2,3);
console.log(a);
/*
A、3 3 4
B、3 10 4
C、3 10 10
D、3 10 undefined
*/
9、
var foo='hello';
(function(foo){
console.log(foo);
var foo=foo||'world';
console.log(foo);
})(foo);
console.log(foo);
/*
A、hello hello hello
B、undefined world hello
C、hello world world
D、以上答案都不正确
*/
10、需画图
var a=9;
function fn(){
a=0;
return function(b){
return b+a++;
}
}
var f=fn();
console.log(f(5));
console.log(fn()(5));
console.log(f(5));
console.log(a);
/*
A、6 6 7 2
B、5 6 7 3
C、5 5 6 3
D、以上答案都不正确
*/
二、问答题(需要画图)
1、
var ary=[1,2,3,4];
function fn(ary){
ary[0]=0;
ary=[0];
ary[0]=100;
return ary;
}
var res=fn(ary);
console.log(ary);
console.log(res);
2、
function fn(i) {
return function (n) {
console.log(n + (i++));
}
}
var f = fn(10);
f(20);
fn(20)(40);
fn(30)(50);
f(30);
3、
var i = 10;
function fn() {
return function (n) {
console.log(n + (++i));
}
}
var f = fn();
f(20);
fn()(20);
fn()(30);
f(30);
4、无需画图
var test = (function(i){
return function(){
alert(i*=2);
}
})(2);
test(5);
5、
var a=1;
var obj ={
"name":"tom"
}
function fn(){
var a2 = a;
obj2 = obj;
a2 =a;
obj2.name =”jack”;
}
fn();
console.log(a);
console.log(obj);
6、无需画图
var a = 1;
function fn(a){
console.log(a)
var a = 2;
function a(){}
}
fn(a)
7、
var a=0,
b=0;
function A(a){
A=function(b){
alert(a+b++);
};
alert(a++);
}
A(1);
A(2);
三:附加思考题(面试题)
1、以下代码的功能是要实现为5个input按钮循环绑定click点击事件,绑定完成后点击1、2、3、4、5五个按钮分别会alert输出0、1、2、3、4五个字符。(腾讯)
- 请问如下代码是否能实现?
- 如果不能实现那么现在的效果是什么样的?
- 应该做怎样的修改才能达到我们想要的效果,并说明原理?
<div id="btnBox">
<input type="button" value="button_1" />
<input type="button" value="button_2" />
<input type="button" value="button_3" />
<input type="button" value="button_4" />
<input type="button" value="button_5" />
</div>
<script type="text/javascript">
var btnBox=document.getElementById('btnBox'),
inputs=btnBox.getElementsByTagName('input');
var l=inputs.length;
for(var i=0;i<l;i++){
inputs[i].onclick=function(){
alert(i);
}
}
</script>
2、document.parentNode 和 document.parentnode 的区别?(腾讯)
3、你理解的闭包作用是什么,优缺点?(乐视)
4、简述let和var的区别
=======================================================================
-
写出下面代码输出结果
var num = 10; var obj = {num: 20}; obj.fn = (function (num) { this.num = num * 3; num++; return function (n) { this.num += n; num++; console.log(num); } })(obj.num); var fn = obj.fn; fn(5); obj.fn(10); console.log(num, obj.num);
-
写出下面代码输出结果
var fullName='language'; var obj={ fullName:'javascript', prop:{ getFullName:function(){ return this.fullName; } } }; console.log(obj.prop.getFullName()); var test=obj.prop.getFullName; console.log(test());
var name='window'; var Tom={ name:"Tom", show:function(){ console.log(this.name); }, wait:function(){ var fun=this.show; fun(); } }; Tom.wait();
-
腾讯面试题
function fun(){ this.a=0; this.b=function(){ alert(this.a); } } fun.prototype={ b:function(){ this.a=20; alert(this.a); }, c:function(){ this.a=30; alert(this.a) } } var my_fun=new fun(); my_fun.b(); my_fun.c();
-
怎么规避多人开发函数重名的问题?(百度搜索)
-
360面试题
window.val=1; var json={ val:10, dbl:function(){ this.val*=2; } } json.dbl(); var dbl = json.dbl; dbl(); json.dbl.call(window); alert(window.val + json.val);
(function(){ var val =1; var json ={ val:10, dbl:function(){ val*=2; } }; json.dbl(); alert(json.val+val); })();
function C1(name){ if(name) { this.name = name; } } function C2(name){ this.name =name; } function C3(name){ this.name = name ||'join'; } C1.prototype.name='Tom'; C2.prototype.name='Tom'; C3.prototype.name='Tom'; alert((new C1().name)+(new C2().name)+(new C3().name));
-
滴滴面试题
var foo = { bar: function () { console.log(this); } }; foo.bar(); (foo.bar)();