今天总结了几道,感觉非常有意思的题,有感兴趣的可以看下,有疑问请留言~

(答案在最后)

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

前端常见面试题总结part2的更多相关文章

  1. 一道常被人轻视的web前端常见面试题(JS)

    本文转载自站长之家,如有侵权问题,请联系我,马上删除. 面试题是招聘公司和开发者都非常关心的话题,公司希望通过它了解开发者的真实水平和细节处理能力,而开发者希望能够最大程度地展示自己的水平(甚至超常发 ...

  2. WEB前端常见面试题汇总:(一)

    1.JS找字符串中出现最多的字符 例如:求字符串'nininihaoa'中出现次数最多字符 方法一: var str = "nininihaoa"; var o = {}; for ...

  3. web前端常见面试题

    转载自:https://www.cnblogs.com/jj-z/p/7999538.html 一.理论知识 1.1.讲讲输入完网址按下回车,到看到网页这个过程中发生了什么 a. 域名解析 b. 发起 ...

  4. web前端常见面试题汇总

    一.理论知识 1.1.讲讲输入完网址按下回车,到看到网页这个过程中发生了什么 a. 域名解析 b. 发起TCP的3次握手 c. 建立TCP连接后发起http请求 d. 服务器端响应http请求,浏览器 ...

  5. 【javascript常见面试题】常见前端面试题及答案

    转自:http://www.cnblogs.com/syfwhu/p/4434132.html 前言 本文是在GitHub上看到一个大牛总结的前端常见面试题,很多问题问的都很好,很经典.很有代表性.上 ...

  6. Web开发的常见面试题HTML和HTML5等

    作为一名前端开发人员,HTML,HTML5以及网站优化都是必须掌握的技术,下面列举一下HTML, HTML5, 网站优化等常见的面试题: HTML常见面试题: 1. 什么是Semantic HTML( ...

  7. 整理的最全 python常见面试题(基本必考)

    整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...

  8. 整理的最全 python常见面试题

      整理的最全 python常见面试题(基本必考)① ②③④⑤⑥⑦⑧⑨⑩ 1.大数据的文件读取: ① 利用生成器generator: ②迭代器进行迭代遍历:for line in file; 2.迭代 ...

  9. Vue常见面试题汇总

    Vue框架常见面试题   1.active-class是哪个组件的属性?嵌套路由怎么定义? 答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么 ...

随机推荐

  1. 使用原生JS的AJAX读取json全过程

    首先ajax(async javascript and xml)是用于前端与后端文件比如xml或者json之间的交互.他是一种异步加载技术,意味着你点击某个加载事件是再也不用刷新整个页面,而是发送局部 ...

  2. IE浏览器new Date()带参返回NaN解决方法

    var start = '2016-01-01 12:12:12'; var date = new Date(start); 得到的时间为NaN: 解决方法: 1.自定义方法 自定义一个NewDate ...

  3. sublime text3 verilog代码编写高级操作篇

    2018.10.21 好久没写博客了,这段时间一直在学习一直在沉淀,然而发现学的越多会的更少,只能快马加鞭吧! 博主从大一暑假接触FPGA,到现在快一年半了,时间恍逝.刚开始入门也是用的quartus ...

  4. vue-cli3 中的环境变量

    官方文档是这样写的: src同名文件夹下的建立 .env.[model] 配置文件  // mode:production development ... 载入的变量会对vue-cli-service ...

  5. swift-延时加载函数

    //延时加载函数 func delayLoad(){ let time: NSTimeInterval = 2.0 let delay = dispatch_time(DISPATCH_TIME_NO ...

  6. Chromium CEF 2623 -- 支持 xp 的最后一个版本源码下载和编译步骤

    背景 因为项目需要在客户端中内嵌浏览器,需要支持 xp 操作系统和播放视频,但 CEF 2623 以后的版本已经不支持 xp 操作系统,也不再提供 2623 版本的二进制发布包下载,只好自己手动编译. ...

  7. 洛谷——P1613 跑路

    P1613 跑路 题目大意: 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B ...

  8. 洛谷——P2657 [SCOI2009]windy数

    P2657 [SCOI2009]windy数 题目大意: windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和 ...

  9. 啥是SQL?

    SQL:(Structured Query Language)是结构化查询语言缩写.是一门专门与数据库管理系统打交道的语言. SQL语言:是关系型数据库的标准语言,,其主要用于存取数据,查询数据,更新 ...

  10. 获取springbean的几种方式

    首先我说一下我遇到的问题,再项目初始化时候,spring容器初始化前要执行的操作中使用到了bean去做一些增删改查操作,这样做是不能自己使用springbean的数据源去操作的,所以需要动态获取spr ...