水一般的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为true则返回statement1,否则返回null。然后else_if(null,[condition2,statment2]
)函数执行。如果还是null,执行else(null,statement3)
合乎自然而生生不息。。。