当前位置: 代码迷 >> JavaScript >> js的“话语优先”作怪
  详细解决方案

js的“话语优先”作怪

热度:103   发布时间:2012-11-15 15:16:15.0
js的“语句优先”作怪
function(){}() //匿名函数立即执行, 语法分析期报错
{}.constructor //获取对象直接量的构造器,语法分析期报错

为什么呢:
{}有三种意思:
1 语句块
2 函数
3 对象字面量
语句块这个含义是最优先的

解决办法 :
1. 添加个变量接收
var c = {}.constructor;  不会报错
var fn = function(){}(),也不会报错。

2.利用()强制实现
(function(){})(),(function(){});//强制其理解为函数(语义3 ),“函数()”表示执行该函数,即声明后立即执行了。
({}).constructor //({})强制把大括号理解成对象直接量(语义2 ),“对象.xx”表示获取对象的成员,自然后面的点运算符可以正常执行了。

  相关解决方案