zoukankan      html  css  js  c++  java
  • 水一般的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)


    合乎自然而生生不息。。。
  • 相关阅读:
    OpenJudge 2738 浮点数加法
    OpenJudge 2809 计算2的N次方
    OpenJudge / Poj 1003 Hangover
    OpenJudge 2706 麦森数
    模板:大整数除法
    OpenJudge 2737 大整数除法
    模板:大整数减法
    ES Field Collapsing 字段折叠使用详解
    ES aggregation详解
    一个一站式流式处理云平台解决方案
  • 原文地址:https://www.cnblogs.com/samwu/p/2690987.html
Copyright © 2011-2022 走看看