JavaScript和C++的比较

  我是从C++转前端的,JavaScript和C++是两门非常流行的编程语言,但是两者的差异非常大,完全按照C++等静态语言的编程模式并不能完全发挥JS的优势。两门语言的比较也是一个循序渐进更进一步了解个中奥妙的过程,本人并不是精通两门语言的大神,仅仅是记下学习过程中自我感觉比较有趣的异同点。

核心差异

  • C++是强类型的静态语言,编译的时候检查语法,JavaScript是弱类型的动态语言,运行时检查;
  • 作用域不同,C++是块级作用域,JavaScript是函数作用域
  • C++的类是静态的,在编译时已经定型。JavaScript的对象是动态的,可以在运行时新增或删除属性;

语法差异

  • C++必须先声明后使用,而JavaScript有声明提前的机制,JavaScript中多次声明同一个变量是无害的;
  • C++中的函数必须显示指明返回类型(主函数和构造函数、析构函数除外),JavaScript不用;
  • JavaScript中不能在形参列表中指定默认形参,需要在函数体内另外指定,继承也需自行判定;
  • C++和JavaScript的可省略形参都必须放在参数表末尾,JavaScript并不检查传入的实参类型;
  • C++中delete之后引用变无效,JavaScript使用delete删除的属性(如果还有其它引用),则还会存在,可能会带来内存泄露;

变量类型差异

  • C++的string类可以直接修改其中的内容,JavaScript的不可以:
    1
    2
    3
    4
    string s="abc"; //C++
    s[0]=r; //s="rbc";
    var s="abc"; //JS
    s[0]=r; //s="abc"
  • C++创建数组必须制定长度(new除外),格式为:int a[3]={1,2,3};
  • JavaScript的数组是动态的,定义格式为:var a=[1,2,3];
  • C++不允许两个字符串直接量相加(”abc”+”def”),在JavaScript中这是允许的;