1.JS是一种弱类型语言,函数(或)方法可以不要参数类型声明参数返回值声明,定义变量可以不要声明符var;因为不需要参数类型声明,所以用传入参数进行函数调用的时候容易发生错误,只能进行多重条件判断,严格参数检测

2.JS以函数为程序主体,函数相当于类,可以实例化

3.JS没有块范围概念,即使是循环里定义的变量,脱离循环依然可以使用

4.undefined表示没有为变量设置值或熟悉不存在,null表示有值,只是值为null;undefined和null只有在”===”的时候才不相等

5.JS只有一个异常类Error,所以最多只有一个catch语句,并且只要存在finally,就必然执行

6.函数中this修饰的变量为实例属性(this.a=aa),以函数名(类名)修饰的变量为类属性实例(对象)无权访问类属性,所以两者同名无碍

7.JS参数传递也传递的是副本,但是对于复合类型,传入函数的副本和原复合类型的引用指向同一个,所以,修改引用会改变原复合类型的值,本身数据类型不变

8.JS函数调用可以不传参数,默认为undefined;传入的参数个数可以不匹配;

9.相同函数可以多个,但只执行最后一个,前面全部被覆盖,不管存不存在函数参数的区别

10.JS是一种基于对象的脚本语言,并不是面向对象的语言(JS中的对象全部是Object的子类,地位平等,所以不存在继承关系;它们也是它们函数【类】的对象)

11.JS也是一门动态的语言,它不仅可以为实例动态地添加属性和方法,也可以为函数(类)动态地添加属性和方法(甚至是为内置类);为类动态地添加指:通过实例.prototype.新属性(或方法)=“….”,这样产生的方法为函数外方法不会产生闭包不会因多个实例化而造成多个方法(函数),造成的内存泄露所有实例共享这个扩展的方法,这种扩展等于”伪继承