2015-360web一面js试题自我解答

原创 2016年06月01日 21:46:20

     大家好我是Amo,最近开始一点点的学习前端的知识,这里看到一分360的一面的几道有关js的题,自己看了也做了下.希望通过这种方式记录下自己对知识的理解,以防以后忘记可以在这里温习,希望大家看见不对的,多多指点,多多交流吧~


题是摘自 http://www.lupaworld.com/article-253526-1.html

1.下面代码的输出值是?
alert(1&&2);

这里是在考察对逻辑运算的知识掌握程度。
我们都知道&&是用来进行判断该符号前后两个表达式对错情况的。

先来看看MDN对它的定义:逻辑运算符通常用于布尔型(逻辑)值;这种情况,它们返回一个布尔型值。然而,&&和||运算符实际上返回一个指定操作数的值,因此这些运算符也用于非布尔型,它们返回一个非布尔型值。
可见这道题考察了第二种情况,按照&&的运算规则,前对符号前的表达式进行判断,因为1不能够转换为false一类的值(false,undefined,0都会被判定为false,从而返回其本身),所以这时计算机会顺利进行判断第二部分即&&后的表达式,这中情况下,无论后面的表达式是什么,都会返回它的结果。如果觉得有点乱,结合下面的代码理解一下:
1&&3 //return 3
'a'&&4 //return 4  这里注意a必须带引号,即为string,若为一个没有赋值的a,console会报错
0&&'b' //return 0
'cat'&&'dog' //return dog
undefined&&'x' //return undefined
false&&123 //return false
true&&undefined //return undefined

//这里简单的演示几个||,它与&&是对应的
true||false //return true
1||false //return 1
'abc'||false //return abc
false||true //return true
false||'cat' //return cat
false||1 //return 1
false||undefined //return undefined 


2.正则表达式匹配,开头为11N, 12N或1NNN,后面是-7-8个数字的电话号码.

该题考察的是正则表达式的运用,这里不是很懂电话号码的规则,所以这里只能做出不完美版,还希望大神指点.
/^((11N)|(12N)|(1NNN))\d{7,8}/ 


3.写出下面代码的输出值:
var obj = {   a: 1,    
              b: function () {
                    console.log(this.a)
                              }
           };
var a = 2;
var objb = obj.b;
obj.b();
objb();
obj.b.call(window);
输出结果为1;2;2

该题考察的是作用域与call( )函数的应用以及函数赋值的细节:
首先是函数的引用赋值,objb( )被赋值后,所指向的地方也是function( ){console.log(this.a)},所以当objb( )运行时,这里的this便是window,window的a值为2,所以objb( )→window.objb( );所以前面两个的输出不是问题了,1和2;下来时call( ),call( )函数的调用使得window对象进行了b( )函数的调用,如同进行了window.b( ),同第二个情况相同,自然结果也是2.


4.写出下列代码的输出值:
function A() {}
function B(a) { this.a = a;}
function C(a) {    
                    if (a) {   this.a = a;    }
              }
    A.prototype.a = 1;
    B.prototype.a = 1;
    C.prototype.a = 1;
    console.log(new A());
    console.log(new B());
    console.log(new C(2));
    
    //结果:
     A {}
     B {a: undefined}
     C {a: 2}
该题应该就是简单的考察了一下对象的构造情况,新的对象的所有__proto__的a都为1.


5.写出下列代码的输出值:
var a = 1;
function b() {   
        var a = 2;   
        function c() { 
                console.log(a);   
                 }   
         return c;
         }
 b()();
 
 //结果为2

该题考察的是作用域链的问题.
再调用c( )函数的时候,关于c的一条作用域链为:c( )— >b( )— >window
因为在b中存在a的值,所以这时a=2,就被使用了.


希望路过的大神能够指点下~













版权声明:本文为博主原创文章,未经博主允许不得转载。

环信一面二面三面

下午5点半刚回学校,接到面试电话去活动中心面试。。接着就是1面2面3面。 一面:是个做后台的大大,讲笔试的两道编程题,然后问了一些知识,面比较多但是没有深入问,比如B树,动态规划,网络编程中建立服...
  • noc_lemontree
  • noc_lemontree
  • 2016年09月10日 22:28
  • 665

Android面试一天一题(1 Day)

前言我从2009年开始接触Android开发(SDK1.6),然后一直在Android这条路上痛并快乐地颠簸顽抗至今。一算也有6年光景了,6年中参加过不同公司的面试,也同样面试过不同公司跳槽来的人,想...
  • prince58
  • prince58
  • 2016年06月30日 23:23
  • 501

第七单元 7.10

#include class base { public: base(int a,int b,int c,int d); base(){} friend...
  • dailen233
  • dailen233
  • 2015年06月30日 14:11
  • 130

IMO 2017 T4解答

IMO 2017 T4解答
  • PKU_ZZY
  • PKU_ZZY
  • 2017年07月29日 20:01
  • 363

试题解答

Collection 和 Collections的区别。 Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。 Collection是个java.util下的...
  • Lu_Dn
  • Lu_Dn
  • 2012年09月02日 21:16
  • 105

ECNU OJ

1000#include #include using namespace std;int main(int argc,char *argv[]) { int a,b; while(s...
  • zxiang248
  • zxiang248
  • 2016年03月31日 16:57
  • 419

北电一面试题

1.英语介绍,然后随机问了些问题,比如为什么加入北电,为什么不去华为.2.下面是中文.项目介绍.3.有哪些编程经验.4.七层网络协议,什么叫会话层,那表示层呢?你知道哪个协议是表示层的?简单介绍下随路...
  • qiluofei
  • qiluofei
  • 2007年10月23日 10:55
  • 839

一念之差 一面是佛一面是魔

今天很郁闷,看了福彩昨天开的双色球要郁闷死了,我一直买的那串号码居然中了五个红球,我不经常买彩票,偶尔买张一般也都是买同一串数字,而昨天买手机回来看到有彩票店进去了一时急了,就不回忆号码了,就打了个随...
  • anyewuming
  • anyewuming
  • 2009年03月16日 22:41
  • 2320

面试题->motolola一面试题

#include int main() { int a[5] = {1, 2, 3, 4, 5}; int* p1 = (int*)(&a + 1); int* p2 =...
  • hailmy
  • hailmy
  • 2013年09月17日 09:52
  • 538

今天遇到一面试题

请写出java代码,实现一下方法,计算对于数字100,共有多少种组合方法。 (假设组合时可以使用的数字包括100,50,20,10,5,2,1),比如如果M为1,共有1中组合方法,即1*1个; 如果M...
  • sinat_35777780
  • sinat_35777780
  • 2017年08月31日 21:25
  • 53
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2015-360web一面js试题自我解答
举报原因:
原因补充:

(最多只允许输入30个字)