1.原题:

function Foo() {
getName = function () { alert (); };
return this;
}
Foo.getName = function () { alert ();};
Foo.prototype.getName = function () { alert ();};
var getName = function () { alert ();};
function getName() { alert ();} //请写出以下输出结果:
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();

下面是我个人的分析:(先进行变量和函数的提升,在进行分析)

  function Foo(){
getName = function(){//这里是函数表达式,但是没有使用var,执行的时候,会现在当前作用域查找有没有getName,如果有就返回,如果没有就想上找,直到直到全局作用域下,本例中,当前作用域没有,但是全局作用域中有var getName的声明,并且还有赋值,这个时候,会被他覆盖掉,变成getName = function(){console.log(1)};也就是覆盖了下面的getName = function(){console.log(4)};
console.log();
}
return this;
} var getName;
// Foo().getName();
function getName(){console.log()};//函数声明,在函数提升的时候会把整个函数体提升
Foo.getName = function(){console.log()};//给Foo中创建了一个getName的属性,并赋值了一个匿名函数
Foo.prototype.getName=function(){console.log()};
getName = function(){console.log()};//这里是赋值操作,会覆盖40行的函数声明 Foo.getName();////访问Foo中的静态属性getName,也就是上面的赋值的匿名函数,所以输出的2
getName();//4因为45的赋值操作覆盖了42行的函数声明,顾输出的是4
Foo().getName();//1这里是这样操作的(Foo()).getName();我们可以看出Foo()属于window调用,this指向的就是window,
        他返回的this就是window,所以这里就相当于window.getName();window调用的时候会在当前作用域下找有没有getName,如果有就执行,
        这里全局环境的的赋值也就是getName = function(){console.log(4)};但是他已经被Foo中的getName覆盖了,变成了getName = function(){console.log(1)};
        所以这里输出的就是1;(注意这些覆盖是发生在调用的时候);;这里涉及this的问题
getName();//1、、由于上面的操作,getName = function(){console.log(4)};已经被覆盖成了getName = function(){console.log(1)};
            所以这里再直接访问getName()的时候,已经变了1
new Foo.getName();//2这里涉及的时候运算符的优先级,点的优先级高于new的优先级。所以先执行Foo.getName的操作,那就是输出2
new Foo().getName();//3这里也是优先级的问题,小括号的优先级最高,所以是(new Foo()).getName();那么就是先实例一个Foo的对象,然后去调用实例方法getName();
      根据属性搜索原则,先去构造函数中找,没有就上原型中去找,这里构造函数Foo中没有,但是原型中已经添加了getName = function(){console.log(3)};所以这里输出的是3
new new Foo().getName();////还是优先级的问题,应该是new ((new Foo()).getName)();先实例化Foo,在将Foo原型中的getName当成构造函数,
                    继续实例化,然后调用
// 这里我们写一个小demo
function fn(){
setName = function(){console.log()};
}
fn.prototype.setName= function(){console.log()};
// new new fn().setName();
// console.log(new((new fn()).setName)());
new((new fn()).setName)();

2.获取100 - 1000之内的左右水仙花数

 var daffodil = () => {
var temp = []
var x,y,z,sum
for (var i = 100; i < 1000; i++) {
x = parseInt(i / 100)
y = parseInt(i % 100 / 10)
z = parseInt(i % 100 % 10)
sum = Math.pow(x, 3) + Math.pow(y, 3) + Math.pow(z, 3)
if (i == sum) {
temp.push(i)
}
}
return temp
} var x = daffodil()
console.log(x)

关于JavaScript的一些笔试题的更多相关文章

  1. ThoughtWorks西邮暑期特训营 -- JavaScript在线笔试题

    ThoughtWorks 公司在西邮正式开办的只教女生前端开发的女子卓越实验室已经几个月过去了,这次计划于暑期在西邮内部开展面向所有性别所有专业的前端培训. 具体官方安排请戳:ThoughtWorks ...

  2. 从阿里巴巴笔试题看Java加载顺序

    一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...

  3. 我设计的ASP.NET笔试题,你会多少呢

    本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...

  4. 也许你需要点实用的-Web前端笔试题

    之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w ...

  5. Web前端面试笔试题总结

    最近一段时间要毕业了,忙着找工作,见过不少笔试面试题,自己总结了一些加上网上找的一些整合了一下.答案暂时都东拼西凑出来了,但是还是先不发出来,一方面是答案并不是唯一的并且自己的答案不能保证对,另一方面 ...

  6. 一道灵活的css笔试题

    今天在网上看到一css笔试题,乍一看很简单,实则内部暗藏玄机,题目大概是:九宫格,每格长宽50px,边框宽度5px,鼠标经过边框变红,效果如下: 鼠标路过时: 以下是代码(如有不足之处望多加指正) & ...

  7. PHP笔试题(转载)

    整理了一份PHP高级工程师的笔试题,问题很全面.嗯,基本上这些题都答得不错,那么你应该可以胜任大部分互联网企业的PHP职位了.下面直接上题. 1. 基本知识点 HTTP协议中几个状态码的含义:503, ...

  8. 收藏所用C#技术类面试、笔试题汇总

    技术类面试.笔试题汇总 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补 ...

  9. Android开发面试经——4.常见Android进阶笔试题(更新中...)

      Android开发(29)  版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...

随机推荐

  1. pip 清华镜像

    临时使用: 可以在使用pip的时候加参数-i  https://pypi.tuna.tsinghua.edu.cn/simple 例:pip install -i https://pypi.tuna. ...

  2. SQL 事务篇和约束

    数据库事务: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行 事务是恢复和并发控制的基本单位.事务应该具有4个属性 ...

  3. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Train Seats Reservation

    You are given a list of train stations, say from the station 11 to the station 100100. The passenger ...

  4. C#封装访问修饰符

    C# 封装 封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中".在面向对象程序设计方法论中,封装是为了防止对实现细节的访问. 抽象和封装是面向对象程序设计的相关特性. ...

  5. 贪心 UVA 11729 Commando War

    题目传送门 /* 贪心:按照执行时间长的优先来排序 */ #include <cstdio> #include <algorithm> #include <iostrea ...

  6. VMWare虚拟网络编辑

    VMWare虚拟网络编辑记录. 点击"编辑->虚拟网络编辑器" 在网卡列表中选择"VMnet8"查看目前设置,点击右下角的更改设置进行网络修改. 备注:更 ...

  7. 使用Oracle实现的MyBatis分页查询效果

    1.mybatis.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configur ...

  8. Pro ASP.NET Core MVC 第6版翻译 目录页

    Pro ASP.NET Core MVC 第6版 目录 第一部分 第一章 ASP.NET Core MVC 的前世今生 第二章 第一个MVC应用程序(上) 第二章 第一个MVC应用程序(下) 第三章 ...

  9. Linux下如何从mysql数据库里导出导入数据

    https://blog.csdn.net/u012884402/article/details/47337701 一. 表的导入 1.进入数据库 mysql 数据库名 2.​查看表 show tab ...

  10. [leetcode]Add Two Numbers——JS实现

    Javascript的结构体应用,如下:    function station(name, latitude, longitude){        this.name = name;        ...