JavaScript高级 js语言通识

    产生式(BNF)

    - 用尖括号括起来的名称来表示语法结构名

    - 语法结构分成基础结构和需要用其他语法结构定义的复合结构

        - 基础结构称为终结符

        - 复合结构称为非终结符

    - 引号和中间的字符表示终结符

    - 可以有括号

    - * 表示重复多次

    - | 表示或

    - + 表示至少一次

    通过产生式理解乔姆斯基谱系

   

    - 0型 无限制文法

        - ?::=?

    - 1型 上下文相关文法

        - ?<A>?::=?<B>?(第一个问号叫上文第二个问号叫下文,后面的问号同理)

    - 2型 上下文无关文法

        - <A>::=?

    - 3型 正则文法

        - <A>::=<A>?

        - <A>::=?<A>(错误写法)

   

    一般来说,JavaScript总体属于上下文无关文法,在特例如{

        get a {return 1}

        get: 1

    }

    与 2 ** 1 ** 2中使用上下文相关文法来分析,所以严格意义上来说JavaScript属于上下文相关文法

    VB中, < 可能是小于号,也可能是XML直接量的开始,取决于当前位置是否可以接受XML直接量

    JavaScript中, / 可能是除号,也可能是正则表达式开头,处理方式类似于VB,字符串模板中也需要特殊处理 } ,还有自动插入分号规则

    语言的分类

    形式语言--用途

        - 数据描述语言

            如 JSON,HTML,XAML,SQL,CSS

        - 编程语言

            如 C,C++,Java,Python,Ruby,Perl,Lisp,T-SQL,Clojure,Haskell,JavaScript

    形式语言--表达方式

        - 声明式语言

            如 JSON,HTML,XAML,SQL,CSS,Lisp,Clojure,Haskell

        - 命令型语言

            C,C++,Java,C#,Python,Ruby,Perl,JavaScript

    图灵完备性

        命令式--图灵机

            - goto

            - if和while

        声明式--lambda

            - 递归

    动态与静态

        - 动态

            - 在用户的设备/在线服务器上

            - 产品实际运行时

            - Runtime

        - 静态

            - 在程序员的设备上

            - 产品开发时

            - Compiletime

    类型系统

        - 动态类型系统与静态类型系统

        - 强类型与弱类型

            String + Number

            String == Boolean(最臭名昭著的失败的设计)

        - 复合类型

            结构体

            函数签名

        - 子类型

        泛型

            逆变/协变

       

        凡是能用Array<Parent>的地方,都能用Array<Child>

        凡是能用Function<Child>的地方都能用Function<Parent>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值