论坛首页 Web前端技术论坛

一些非常蛋疼的JavaScript试题

浏览 14398 次
精华帖 (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

对否啊
0 请登录后投票
   发表时间:2011-06-24   最后修改:2011-06-24
不对呀,呵呵.主要是后三个log 
0 请登录后投票
   发表时间:2011-06-24  
super_monkey 写道
不对呀,呵呵.主要是后三个log 

我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货?
0 请登录后投票
   发表时间:2011-06-24   最后修改:2011-06-24
int08h 写道
super_monkey 写道
不对呀,呵呵.主要是后三个log 

我就想问一个问题,你只想考eval的作用域,还是想顺便考考window.name这货?


呵呵,其实就是考考eval在不同的执行环境中变量的作用域问题,name: 会放在全局(window),age 和 password会放在他们执行的function范围.这样好处就很明显了,不污染全局。所以后面的3个log应为 number undefined undefined
0 请登录后投票
   发表时间: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……
0 请登录后投票
   发表时间:2011-06-27  
这个明显是在测试javascript的typeof,没啥特别的。。
0 请登录后投票
   发表时间:2011-06-29  
昨天去面试也遇到了一个,请输出下面程序的执行结果:
1.toString();
(1).toString();
-1 .toString();
0 请登录后投票
   发表时间:2011-06-29  
xingqiliudehuanghun 写道
昨天去面试也遇到了一个,请输出下面程序的执行结果:
1.toString();
(1).toString();
-1 .toString();

1.toString()过不了语法,-1 .toString()是-(1 .toString())
0 请登录后投票
   发表时间:2011-06-30  
他想考察的是1.toString()会报错,但1之后加一个空格就可以了,所以最后的-1_.toString()//_指空格就可以了
0 请登录后投票
   发表时间:2011-06-30  
soni 写道
这么写容易被打死


确实蛋疼。。。离开JS,可以延长你的寿命。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics