java、dart、kotlin、 javascript(js)语言对比

语言范畴定义 java dart kotlin js JavaScript 一般用于HTML 和 Web 的编程语言。 日志打印 Log.e/v/d("%s, %d") print print("I am ${param1}, Hi ${param2},I am ${param3}"); println("$s.length is ${s.length}") 使用 window.alert() 写入警告框 使用 document.write() 写入 HTML 输出 使用 innerHTML 写入 HTML 元素 使用 console.log() 写入浏览器控制台 变量定义 基本类型和object类型定义 var val(final) / var var final final final final 常量 const const const const(ES2015新增) 顶部基类 Object dynamic Object 无顶部基类: Object Date Array String Number Boolean 判空运算符 if(x==null)null else x (a != null ? a : "b") ?运算符: x?.toString() a ?? "b" ?运算符: var a:Int? var b:Int if(x==null)... 幂运算:**幂 Builder Builder ..运算符 final p = Person() ..username = "lecon" ..password = "123456" ..setSex(true); 构造函数初始化 new Xobject() 空类型 Null null null null 数值 int/double numbers Byte、Short、Int、Long、 Float、Double int、short、long等 字符串 String strings String da、"adf"、String bool类型 bool booleans true/false Boolean true/false boolean 列表 List list List<Int> ArrayList ["Saab", "Volvo", "BMW"]; 映射 Map map MutableMap、HashMap、LinkedHashMap new Map() 函数返回简写 String test() { return "123"; } String test ()=> "123"; ->函数 var addFun : (Int,Int) -> Int = {a,b -> a + b} function myFunction() { return "Hello"; } 局部函数、 闭包 参数以引用方式传递, 可以达到相同的使用目的 Function(int a) fn() { var num = 1; return (int a) { num += a; print(num); }; } var loadFn = fn(); loadFn(1); loadFn(2); } 局部函数和 闭包的返回和使用 当函数执行完毕后 仍然可以 通过 local 对函数的内部变量进行读写 override fun onCreate(savedInstanceState: Bundle?) { ... var num = 0; btn.setOnClickListener { num++ } } JavaScript 变量属于本地或全局作用域。 全局变量能够通过闭包实现局部(私有)。 var add = (function () { var counter = 0; return function () {return counter += 1;} })(); add(); add(); 创建对象 new new关键字可以省略 new 类名() new关键字可以省略 类型判断 instanceof is is、instanceof typeof、instanceof 类型转换 (Class)object强转 as as (Class)object强转 类初始化 构造函数初始化 Class:初始化列表 构造函数初始化 构造函数初始化 访问权限 private _前缀 Dart文件之外不能访问,当前文件不同类是可以的。 open相当于public、 fun声明默认为final修饰 public、protected、private 继承 extends extends class Student : Person extends 接口 implements/interface mixin/with interface class Child : MyInterface implements/interface、abstract get和set 内部属性设置 setter和getter语法糖 class Rectangle { num left, top, width, height; Rectangle(this.left, this.top, this.width, this.height); num get right => left + width; set right(num value) => left = value - width; num get bottom => top + height; set bottom(num value) => top = value - height; } 内部属性设置 constructor 内部属性设置 异常捕获 try { } catch(e) { } finally { } try { throw FormatException(Expected at least 1 section); } on FormatException catch(e) { print(section exception ${e}); } finally { print("I am finally"); rethrow; } try catch finally try catch finally 内联 无 Typedefs 同C++里面的内联函数 内联函数 无 回调 回调(类似于c里面的指针作用) 回调 回调 call/apply 异步和多线程 threadsynchronizedsleepwait otify await/async Future/Stream Future/Stream Promise/async/await 其它特殊性质 lateinit、by lazy
经验分享 程序员 微信小程序 职场和发展