首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

js的“话语优先”作怪

2012-11-15 
js的“语句优先”作怪function(){}() //匿名函数立即执行, 语法分析期报错 {}.constructor //获取对象直接量

js的“语句优先”作怪
function(){}() //匿名函数立即执行, 语法分析期报错
{}.constructor //获取对象直接量的构造器,语法分析期报错

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

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

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

热点排行