• 从js到lua


    为了搞unity的热更新,需要用到lua.

    lua是什么东西?一种脚本语言。脚本语言一般轻量,简单.

    js大家都很熟悉吧。因此我拿它与lua对比

    相同点-----------------------------------------------------

    类型都差不多,追求简单。

    string/string

    number/number

    boolean/boolean

    function/function     都是作为第一类,也可作为参数,可变参数也都是...

    Object/table           property/metatable   原型链  __index里面的元素不被修改

    null|underfined/nil 

    var(es3)/local          不定义是全局    

    coroutine/async       协程(协程实际上只是使函数可以暂停自身执行(使用coroutine.yield),可以从外部恢复(使用coroutine.resume)的一种方法)

    window|global/_G     定义的全局变量

      

    不同点----------------------------------------------------

    js有变量提升                                                                   lua没有变量提升

    js块是放在{}中的                                                              lua中块是以end结束 

    js==,===,!=和!==运算符的优先级低于>,>=,<,<=。       lua中 所有比较运算符都具有相同的优先级。

    js全局变量存在window中                                                  lua全局变量存在_G中

    js模块化 import/export                                     lua模块化require/return(实质上就是函数)

    js的运算符+有两重性(连接符,运行算),                   lua的运算符+只表示运算符,lua的连接符用...

    js判断相等 “5”==5 true                                    lua判断相等 "5"==5 false;

    js判断不等 5 != "5"                                          lua判断不等 5 ~= "5"

    js逻辑运算符&& ||  !                                          lua逻辑运算符 and or not

    js正则表达式转义字符用                                   lua正则表达式转义字符用%

    js有表示空有两种null, underfined                        lua表示空用用nil

    js表示串块``                                                    lua表示字符串块 [[]]

    js表里的初始索引以0开始                                  lua表里的初始索引以1开始

    js有array类型                                                  lua里没有,用table充当

    js有局部变量/全局变量通过作用域区分                 lua通过关键字区分

    js中转化为valueof, {toString:function()}                lua  setmetatable({},{__toString})

    ---调用方式的不同---

    js基本类型的用法 str.,   arr., i++                    lua  string.    tabel.  i++无所使用

    ---tabel相关的方法--- 很简单 concat,insert,remove,sort

      1:js arr转化为字符串 arr.join(",")                    lua 中数组转化为字符串 table.concat(table, ",")

      2:js arr插入,删除 shift,pop,splice,unshift,push  lua中 tabel.insert(tabel, ele), tabel.remove(tabel, ele)

      3:js排序 arr.sort                                          lua中 table.sort(table, ...)

    ---function相关的方法---

     1:js函数作为第一对象                                    lua函数作为第一对象

     2:js函数有作用域 var                                    lua函数也有作用域 local 

     3:js闭包,所谓的闭包就是用域产生的                lua与js的闭包一样    

    ---调试---

    lua是比较严谨的语言

    用next找不到是会报错的            

    总结 

    lua比js更简单。。。,如果你真的会了js,那你也就会了lua.

    lua就是缩量版的js, 去掉了变量提升,去掉了操作符的多义性,  弱化了原型链, 简化了api

    半小时就能入门

  • 相关阅读:
    python3 与dict相关的魔法方法。使用于二叉搜索树的类中
    笔记:nestjs学习基础(1)
    ES6 --(10)class使用、class继承
    redux --(1)核心概念(stateaction educer)、三大原则、todolist with redux
    antV--G2 学习
    react源代码重点难点分析
    jQuery-ui源代码重点难点分析
    webuploader上传插件源代码重点难点分析
    破解jQuery Deferred()异步执行的神秘世界
    ueditor源代码重点难点分析
  • 原文地址:https://www.cnblogs.com/honghong87/p/13959969.html
Copyright © 2020-2023  润新知