我是从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中这是允许的;