var processMessageData = function(b) {
if (!b) {
return null
}
if (typeof (b) == "string") {
b = (new Function("return " + b))()
}
if (!b.id) {
return null
}
var a = (new Function("return " + $("#" + b.id).val()))();
a.requestFields = b.requestFields || {};
a.responseFields = b.responseFields || {};
return a
}今天看到一段代码完全看不明白,上面的 b = (new Function("return " + b))()是什么意思?还有就是a应该是个对象,作用域应该在函数内,为什么可以做返回值?希望高手解答一下。
解决方案 »
- 如何在自己网站播放一个优酷视频的播放列表
- 为什么表情图片第一次发送可以发送,之后就不显示了呢
- 砖家勿进,只求民间高手一枚~~如何让48w+次循环更舒心
- responseText在IE6下面不输出内容的问题
- 请问用javascript怎么实现,(请稍后......)中的6个点每秒显示一个啊?
- Firefox浏览器下无法正常取到iframe的表单控件值
- 请问js中for语句的问题 加了for就无法运行 不加的话正常啊
- 求救,因为由用户触发,也不知道会有多少行,我怎么得到table里的值,td里又有表单,像下拉列表,文本。急呀
- 火狐兼容问题
- 再问:把textarea的内容写到数据库中再读出来时不能自动换行和不识别空格,该怎么样处理!(求javascript版)
- html与jsp
- 判断考试成绩等级。
2、对象也是数据类型 当然可以return ,外部调用这个函数就可以获得a
3、这段代码不怎么样 没有实际用途 不用过多关注
(new Function("return " + $("#" + b.id).val()))()( 2 * (2 + 2) ) * (0)
(new Function("return " + $("#" + b.id).val()))()( 2 * (2 + 2) ) * (0)第一步先运行 2 + 2, 所以就是"return " +$("#" + b.id).val(), 假如$("#" + b.id).val()的值为2, 则这个括号的结果为 "return 2"
第二步2 * (), 所以就是new Funtion("return 2"), 这里的结果就是function() { return 2; }
第三步() * (0),这一步就是 你刚刚创建的function() { return 2; },
如果我们把它换成一个变量var myFunc = function() { return 2; } 那么我们运行这个myFunc的时候就是 myFunc()
然后把a 换成function() { return 2; },,得出来的结果就是 function(){ return 2; }()最终的结果就是 function(){ return 2; }() 这个函数会自动运行 得到返回值2
所以var a = 2最后return a 就是return 2