最近工作的事情特别多,并且还要准备一个长期出差。。所以最近几天先更一些面试题吧~
出差具体多长??
就是 北京总部已经制定好的未来一段时间的安排 没有打算让我回北京的那种长期
当然,面试题一出,各种知识点的问题就出来了,先做面试题,知识点我后边会更。
一、关于引用类型值和基本类型值的面试题
var a = 10;
a.biu = 10;
console.log(a.biu + a);//打印什么?
var b = 'hello';
b.biu= 'world';
console.log(b.biu + b);//打印什么?
var c = { att : "hello" };
c.biu= 'world';
console.log(c.biu+ c);//打印什么?
二、关于函数的面试题
var a=1 , b=0 , c=0 ;
function add(n) {
n=n+1;
}
b=add(a);
alert(b);//弹出几?
function add(n) {
n=n+3;
}
c=add(a);
alert(c);//弹出几?
三、关于变量作用域的面试题
(function(){
a=10;
console.log(window.a)//打印什么?
var a=5;
console.log(a)//打印什么?
}) ()
alert(a);
停-------再翻就看到答案了,先做出答案再看解析
不要偷看
四、答案解析
第一题:
答案分别打印:NaN、'undefinedhello'、'world[object Object]'
- 首先JS的数据类型分为
基本类型值
和引用类型值
。- 而两种类型的值其中有一个区别就是:
基本类型值不能扩展属性,所以当你对一个基本类型值
a=1
扩展:a.name="lily"
,然后获取a.name
的时候得到的undefined。1)第一个
console.log(a.biu + a);
a.biu
是undefined,a是数字10。undefined+10=NaN2 )第二个
console.log(b.biu + b);
b.biu
是undefined,b是字符串hello
。undefined+hello
='undefinedhello'3 )第三个
console.log(c.biu+ c)
c.biu
是获取对象的属性,当然能获取到是'world',c是对象。'world'+对象='word[object object]'(按照字符串规则)
第二题:
答案是 undefined undefined
add这个函数没有return
,说明函数没有返回值。
如果函数没有返回值,那就返回undefined。
b和c都是代表函数返回值,但是两个函数都没有返回值,所以都是undefined
第三题:
答案是:undefined、5、报错
- 其实全局作用域的方法和属性都是window对象的方法和属性
2)匿名函数里声明了a,但是全局并没有声明变量a。- 第一个
window.a
,但是window对象没有a这个属性,**当访问一个对象的属性没有的时候,返回undefined。
4)第二个console.log(a)
是在匿名函数的作用域中,作用域中已经声明了a,并且最后赋值5,所以打印5
5)全局没有变量a,当直接RHS通过访问a(而不是通过window对象访问a属性)的时候,找不到定义a,所以直接报错。
有什么不懂得留言哟~
拜拜!晚安