锁定老帖子 主题:一些非常蛋疼的JavaScript试题
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-24
super_monkey 写道 int08h 写道 1、arguments不是object还能是啥,typeof只能返回number / string / boolean / object / function,明猜也是object……
2、函数表达式中的函数名仅在该函数的执行环境内有效,所以外面g不存在,直接访问不存在的全局属性是ReferenceError 3、var定义的(除非是在eval中用var定义)、参数、某些内置对象和宿主对象具有{DontDelete}特性,必然不能删 4、不知道在说啥,有啥区别吗? 5、就这一题有点意思,关系到进入函数时的参数顺序,依次是函数本身->参数->var声明,因此参数的f覆盖函数自己的函数名f,f()就是1,typeof 1就是number 对于技术比较泛的工程师来说,可能会蛋疼,但是对于专职的前端工程师,这些是基础…… 基本功很扎实嘛。嘿嘿 我也出一题 大家共同提高 console.log(typeof name); console.log(typeof age); console.log(typeof password); var jsstring = "var name = 1; console.log(name);"; eval(jsstring); jsstring = "var age = 2; console.log(age);"; new Function(jsstring)(); jsstring = "var password = 3; console.log(password);"; (function () { eval(jsstring); }()); console.log(typeof name); console.log(typeof age); console.log(typeof password); 应该是undefined undefined undefined number number number 对否啊 |
|
返回顶楼 | |
发表时间:2011-06-24
最后修改:2011-06-24
不对呀,呵呵.主要是后三个log
|
|
返回顶楼 | |
发表时间:2011-06-24
super_monkey 写道 不对呀,呵呵.主要是后三个log
我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货? |
|
返回顶楼 | |
发表时间:2011-06-24
最后修改:2011-06-24
int08h 写道 super_monkey 写道 不对呀,呵呵.主要是后三个log
我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货? 呵呵,其实就是考考eval在不同的执行环境中变量的作用域问题,name: 会放在全局(window),age 和 password会放在他们执行的function范围.这样好处就很明显了,不污染全局。所以后面的3个log应为 number undefined undefined |
|
返回顶楼 | |
发表时间:2011-06-24
super_monkey 写道 int08h 写道 super_monkey 写道 不对呀,呵呵.主要是后三个log
我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货? 呵呵,其实就是考考eval在不同的执行环境中变量的作用域问题,name: 会放在全局(window),age 和 password会放在他们执行的function范围.这样好处就很明显了,不污染全局。所以后面的3个log应为 number undefined undefined 嗯,不过如果是浏览器环境下的话,window自带name这属性且有特殊处理,name永远是string…… |
|
返回顶楼 | |
发表时间:2011-06-27
这个明显是在测试javascript的typeof,没啥特别的。。
|
|
返回顶楼 | |
发表时间:2011-06-29
昨天去面试也遇到了一个,请输出下面程序的执行结果:
1.toString(); (1).toString(); -1 .toString(); |
|
返回顶楼 | |
发表时间:2011-06-29
xingqiliudehuanghun 写道 昨天去面试也遇到了一个,请输出下面程序的执行结果:
1.toString(); (1).toString(); -1 .toString(); 1.toString()过不了语法,-1 .toString()是-(1 .toString()) |
|
返回顶楼 | |
发表时间:2011-06-30
他想考察的是1.toString()会报错,但1之后加一个空格就可以了,所以最后的-1_.toString()//_指空格就可以了
|
|
返回顶楼 | |
发表时间:2011-06-30
soni 写道 这么写容易被打死
确实蛋疼。。。离开JS,可以延长你的寿命。 |
|
返回顶楼 | |