• 前端常见面试题总结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
  • 相关阅读:
    Representation Data in OpenCascade BRep
    Render OpenCascade Geometry Surfaces in OpenSceneGraph
    Render OpenCascade Geometry Curves in OpenSceneGraph
    OpenCascade Shape Representation in OpenSceneGraph
    Geometry Surface of OpenCascade BRep
    Geometry Curve of OpenCascade BRep
    Tyvj2017清北冬令营入学测试
    Spfa算法模板
    洛谷1016 旅行家的预算
    洛谷1290 欧几里得的游戏
  • 原文地址:https://www.cnblogs.com/angfl/p/10950125.html
Copyright © 2020-2023  润新知