<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="Javascript常用面试题（2）- 难度篇" id="card1">
<p> 游客</p><p>
标题:Javascript常用面试题（2）- 难度篇<br/>
正文:<br/>
1，考察thisvar length = 10;function fn(){	alert(this.length)}var obj = {	length: 5,	method: function(fn) {		fn() // ?		arguments[0]() // ?	}}obj.method(fn)这里的坑主要是arguments，我们知道取对象属于除了点操作符还可以用中括号，这里fn的scope是arguments，即fn内的this===arguments，调用时仅传了一个参数fn，因此length为1。 2，函数表达式具名（函数声明同时赋值给另一个变量）或函数声明立即执行时，名仅在该函数内可访问~function() {	alert(typeof next) // ?	~function next() {		alert(typeof next) // ?	}()}()外层匿名函数自执行，打印next，接着内层具名函数自执行。会发现具名的next仅在其自身函数体内可访问，即输出为function。外面是不可见的，typeof就为undefined了。（注：此题IE6/7/8中输出为function function， 标准浏览器为undefined function）同样的情况也发生在将具名函数赋值给一个变量时，如下var func = function a() {	alert(typeof a)}func() // ?alert(typeof a) // ?这条规则是标准中(ES3/ES5)都已明确指出，但IE6、7、8没有严格遵从。可参见w3help的分析或李松峰老师的翻译《命名函数表达式探秘》 3，给基本类型数据添加属性，不报错，但取值时是undefineda = 3a.prop = 4alert(a + a.prop) // ?变量a为数字3，给其添加prop属性，值为4（奇怪吧在JS中这是允许的，且不会有语法错误）。然后alert出a+a.prop的结果。结果是NaN。a.prop为undefined，3+undefined为NAN。举一反三，给字符串添加属性str = 'a'str.prop = 'b'alert(str + str.prop) // ?结果呢？ 4，隐式的全局变量var a = 1function <br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1071&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1071&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1071&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1071&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1071">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1071">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>