zoukankan      html  css  js  c++  java
  • 前端常见面试题总结part2

    今天总结了几道,感觉非常有意思的题,有感兴趣的可以看下,有疑问请留言~
    (答案在最后)
    1.
    考察自执行函数的this指向
    审题要细心

    	var n = 2,
    		obj = {
    			n:2,
    			fn:(function(n){
    				n*=2;
    				this.n+=2;
    				console.log(this.n);
    				console.log(window.n);
    				return function(m){
    					this.n*=2;
    					console.log(m+(++n))
    				}
    			}(n)
    		};
    	var fn = obj.fn;
    	fn(3);
    	obj.fn(3)
    	console.log(n,obj.n);
    
    1. prototype:原型属性
      _proto_: 原型链属性
      hasOwnProperty:检测属性是否属于当前对象私有属性
    	function Fn() {
                var n = 100;
                this.AA = function () { }
                this.BB = function () { }
            }
            Fn.prototype.AA = function () { }
            var f1 = new Fn();
            var f2 = new Fn;
            console.log(f1.n);
            console.log(f1.AA === f2.AA);
            console.log(f1.__proto__.AA === f2.AA)
            console.log(f1.__proto__.AA === f2.__proto__.AA)
            console.log(f1.__proto_.AA === Fn.prototype.AA)
            console.log(f1.hasOwnProperty('AA') === Fn.prototype.hasOwnProperty('AA'));
    
    1. 比较简单的一道题
      	console.log(a);
      	a = 20;
      	function fn(){
      		console.log(a)
      		var a = 12;
      	}
      	fn();
      	console.log(a)
      
    2. 考察变量提升
      	var  foo = 1;
      	function fn(){
      		if(!foo){
      			var foo = 12;
      		}
      		console.log(foo);
      	}
      	fn();
      
    1. 函数形参变量和arguments存在映射
      函数默认返回undefined
      	var a = 4;
      	function test(x,y,a){
      		console.log(a);
      		arguments[2] = 100;
      		console.log(a)
      	}
      	a = test(1,2,3);
      	console.log(a)
      
    2. 函数形参变量和arguments映射建立在函数执行形参赋值的一刻
      形参和实参一一对应,多出来的不建立映射
      	function fn(x,y){
      		var arg = arguments;
      		arg[0] = 100;
      		var y = 200;
      		arg[1] = 300;
      		console.log(y);
      	}
      	fn(20);		
      
    3. 逻辑与 逻辑或
    	console.log(0||1&&2||0||3&&2||1)
    
    1. 还是考察this
    	var num = 10;
    	var obj = {num:20};
    	obj.fn = (function(num){
    		num = this.num + 10;
    		this.num = num + 10;
    		return function(){
    			this.num += ++num;
    		}
    	})(num)
    	var fn = obj.fn;
    	fn();
    	obj.fn();
    	console.log(num,obj.num)
    
    1. 很长的一段
      	function Fn(){
      		this.x = 100;
      		this.y = 200;
      		this.getX = function(){
      			console.log(this.x)
      		}
      	}
      	Fn.prototype.getX = function(){
      		console.log(this.x)
      	}
      	Fn.prototype.getY = function(){
      		console.log(this.y)
      	}
      	var f1 = new Fn;
      	var f2 = new Fn;
      	console.log(f1.getX === f2.getX);
      	console.log(f1.getY === f2.getY);
      	console.log(f1.__proto__getY === Fn.prototype.getY);
      	console.log(f1.__proto__.getX === f2.getX);
      	console.log(f1.getX === Fn.prototype.getX);
      	console.log(f1.constructor);
      	console.log(Fn.prototype.__proto__.constructor);
      	f1.getX();
      	f1.__proto__.getX();
      	f2.getY();
      	Fn.prototype.getY();
      
      10)还是this得问题(发现了好多this的题)
      	var name = 'window';
      	var Tom = {
      		name:'Tom',
      		show:function(){
      			console.log(this.name)
      		},
      		wait:function(){
      		var fun = this.show;
      		fun();
      		}
      	}
      	Tom.wait();
      

    答案:

    1. 9
      10
      8 6
    2. undefined
      false
      false
      true
      true
      true
    3. a is not defined
    4. 12
    5. 3
      100
      undefined
    6. 200
    7. 2(逻辑与的优先级高于逻辑或)
    8. 51 42
    9. false
      true
      true
      false
      false
      Fn
      Object
      100
      undefined;this:f1.proto ,上面没有x,所以是undefined
      200
      undefined;this:Fn.prototype,上面没有y,所以是undefined
    10. window
  • 相关阅读:
    在UpdatePanel上使用FileUpload上传文件
    Android配置开发环境
    文件服务器共享目录设置(一)
    win2008R2的Hyperv安装Ubuntu
    Comodo Time Machine导致系统进不去
    sql2005生成sql2000脚本的时候出现“User.UserType: NoLogin 不是SQL Server 2005 的有效选项“ 的解决方案
    迅雷7偷偷上传文件导致机器变卡
    文件服务器共享目录设置(二)
    再谈Javascript原型继承
    a和a:link的区别
  • 原文地址:https://www.cnblogs.com/angfl/p/10950125.html
Copyright © 2011-2022 走看看