10道javascript笔试题

一、考察this

输出:10 2javascript

第一次输出10应该没有问题。咱们知道取对象属于除了点操做符还能够用中括号,因此第二次执行时至关于arguments调用方法,this指向arguments,而这里传了两个参数,故输出arguments长度为2。php

二、var和函数的提早声明

输出:function  a() {} 2html

咱们知道var和function是会提早声明的,并且function是优先于var声明的(若是同时存在的话),因此提早声明后输出的a是个function,而后代码往下执行a进行从新赋值了,故第二次输出是2。java

三、局部变量和全局变量

输出:10 报错 30git

这是个我犯了好久的错误,很长一段时间我都觉得{…}内的新声明的变量是局部变量,后来我才发现function内的新声明的变量才是局部变量,而 没有用var声明的变量在哪里都是全局变量。再次提醒切记只有function(){}内新声明的才能是局部变量,while{…}、if{…}、 for(..) 以内的都是全局变量(除非自己包含在function内)。github

四、变量隐式声明

答案:10web

前面我说过function和var会提早声明,而其实{…}内的变量也会提早声明。因而代码还没执行前,a变量已经被声明,因而 ‘a’ in window 返回true,a被赋值。闭包

五、给基本类型数据添加属性,不报错,但取值时是undefined

答案:NaN undefinedhelloapp

给基本类型数据加属性不报错,可是引用的话返回undefined,10+undefined返回NaN,而undefined和string相加时转变成了字符串。dom

六、函数声明优于变量声明

答案:function

由于函数声明优于变量声明。咱们知道在代码逐行执行前,函数声明和变量声明会提早进行,而函数声明又会优于变量声明,这里的优于能够理解为晚于变量声明后,若是函数名和变量名相同,函数声明就能覆盖变量声明。因此以上代码将函数声明和变量声明调换顺序仍是同样结果。

七、判断一个字符串中出现次数最多的字符,并统计次数

  • hash table方式:
  • 正则方式:

八、经典闭包

  • dom污染法:
  • 闭包:

九、this

答案:division element undefined

第一次输出很好理解,第二次的话仔细看,this其实已经指向了this.m_Element,由于是this.m_Element调用的 addEventListener函数,因此内部的this全指向它了。能够试着加上一行代码this.m_Element.m_Text = ‘hello world’,就会alert出hello world了。

十、split

请编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如: var url = “http://witmax.cn/index.php?key0=0&key1=1&key2=2″

 

若有意见建议欢迎交流斧正~

相关文章
相关标签/搜索