码迷,mamicode.com
首页 > Web开发 > 详细

18.2.26深信服Web实习生补坑(已拿到offer)----持续更新中,还没写完

时间:2018-03-03 12:27:39      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:面试   ref   项目   tps   面试官   答案   ble   mozilla   默认   

26号晚上8点左右收到电话,面试大概一小时左右,发挥的一般,问到的大部分都答出来了,有些没有讲好。然后面试官说等通知,问了评价,面试官说我现在大三懂这么多已经很不错了,表达能力需要加强,有点紧张口吃。30分钟后收到实习生offer邮件。这里只记录下几个答的不好的点。

1.var和不var的区别?

先问了作用域相关,然后问如果不用var声明一个变量是属于什么变量,这个是全局变量,肯定一下子答上来,然后又问那么不var的和用var声明的变量有什么区别?

js里面的属性是有权限设置的,比如我们直接创建一个对象:

// 我心爱的对象 ob
var ob = {a:1};

// 访问属性
ob.a; // => 1

// 修改属性值
ob.a = 0;
ob.a; // => 0

// 创建新属性
ob.b = 2;
ob.b; // => 2

// 删除属性
delete ob.b;
ob.b; // => undefined

但是上面代码中的对象的所有属性都是可迭代、可修改和可配置的吗?

  • 可迭代,意味着我能够通过 for..in 循环来访问该对象的所有属性. 还能通过 Object.keys() 方法获取该对象的所有属性名.
  • 可修改,意味着我能修改该对象的所有属性的值,通过为这些属性赋予一个新值就能修改: ob.a = 1000;.
  • 可配置,意味着我能修改属性的行为,让该对象的属性都是不可迭代的、不可修改的和不可配置的. 只有可配置的属性才能通过 delete 被删除.

我们用var和不用var的一个区别就在可配置属性上,声明一个全局变量,其实都是给window增加一个属性(浏览器环境下),由于window对象是全局对象,因此默认可以不加"window.",全局作用域下,window也可以用this来代替。

var test = function(){
 a = 'aa';
}
test();
alert(this.a);//弹出'aa' 
alert(window.a);//弹出'aa'
var a = 'aa';
alert(a); //弹出 'aa'
alert(window.a)//弹出'aa' 
a = 'aa';
alert(a); //弹出 'aa'
alert(window.a)//弹出'aa' 

然后关键来了:

var a = 'aa';
delete window.a; // false 
a = 'aa';
delete window.a; // true 

都是为‘window‘对象增加了属性,一个可以删除,一个不能删除。
"delete 不可以删除那些可配置性为false的属性" ,某些内置对象的属性是不可配置的,比如通过变量声明或者函数声明创建的全局对象的属性
不用var创建的变量就可以进行删除。

这个可配置属性在Object.defineProperty()中的第三个参数部分就可以配置,以前在vue框架原理里面也看到过。这个可配置属性名为"configurable",具体看defineProperty()的文档:链接

然后在一些场景里其实也相关了变量函数声明提前,当时跟面试官说了这个,但是面试官否决了,但是确实有些场景确实涉及到了啊:

var var01 = 1;
function funtest() {
 document.write(var01);
 var var01 = 0;
} 

结果为:undefined,函数里面声明的产生了函数作用域,变量声明提前了,所以为undefined。

var var01 = 1;
function funtest() {
 document.write(var01);
 var01 = 0;
} 

结果为:1,不用var就没有提前声明吧,所以我当时其实也答出了一个点,只是没把场景说好,面试官心中可能要的是第一个答案?

 var01 = 1;
function funtest() {
 document.write(var01);
 var var01 = 0;
}

结果为:undefined

var01 = 1;
function funtest() {
 document.write(var01);
 var01 = 0;
}

结果为:1

2.node中间件有哪些?
3.express3.x与4.x的区别?
4.项目有个双重回调为什么不用一层XXXXX?(没听太清楚面试官的意思)

18.2.26深信服Web实习生补坑(已拿到offer)----持续更新中,还没写完

标签:面试   ref   项目   tps   面试官   答案   ble   mozilla   默认   

原文地址:https://www.cnblogs.com/zhangmingzhao/p/8496036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!