水一般的JavaScript语法(未完)

JavaScript语法和水一样灵动。

抛开该死的执行效率,可维护性,可阅读性,让JavaScript语法如同口语一样随意。

---------------------表达式语法 

有四种表达式,前序,中序,后序,正则。

正常的JS采用中序表达式,即a+b。

如果是前序,+ a b;后序,a b +;正则,呃,正则不是用来求值,是用来筛选,那么筛选能否求值?先保留。

如果把+符号当作sum()函数,

a+b就是sum(a,b)。这也是前序表达式。 

也就是说,函数调用,就是前序表达式。 

前序表达式优点,sum(1,2,3,4,5.....),如果换做中序1 + 2 + 3 + 4 + 5 ......你要敲n个+。

那么后序表达式,能否写成(1,2,3,4,5).sum()?换做[1,2,3,4,5].sum()还是有可能。我实现的则是[1,2,3,4,5].wsc(sum)。

后序表达式优点是什么?假设[1,2,3,4,5].wsc(sum(2)),则返回[3,4,5,6,7]。也就是遍历数组元素,进行处理。

再加一个数,[1,2,3,4,5,6].wsc(sum)或[1,2,3,4,5].wsc(sum,6)。第二种加数的方法是不是又回到中序表达式呢? 

对于中序(1+2+3)*2,前序multiply(sum(1,2,3),2),后序是[1,2,3].wsc(sum).wsc(multiply,2)

---------------------函数调用语法

正常情况是func(arg1,arg2....)

能否把参数位置和函数位置调换?可以。

比如sum(1,2)调换则是1.sum(2),引用wsc中间接口则是,[1].wsc(sum,2) ,虽然返回是[3],但很容易转换成3。

有没发现,这和后序表达式很像,因为这就是后序表达式。

对于[1].wsc(sum,2)提取出1 sum 2这是中序表达式;提取出1(sum,2),1看作函数,sum和2看作参数这是前序表达式。

---------------------分支语法

正常的JS是if(condition){},如果把if看作函数,condition看作参数,{}也看做参数,则可以改写成前序表达式if(condition,{})。

 

condition1 ? statement1 : statment2 等同于 else(if(condition1,statement1),stament2)
condition1 ? statement1 : condition2 ? statement2 : statement3 等同于 [condition1,statement1].wsc(if).wsc(else_if,[condition2,statment2]).wsc(else,statment3)

 

如果condition1为true则返回statement1,否则返回null。然后else_if(null,[condition2,statment2]
)函数执行。如果还是null,执行else(null,statement3)

posted @ 2012-09-18 17:04  草珊瑚  阅读(279)  评论(0编辑  收藏  举报