https://www.2cto.com/kf/ware/Java/ Script 类型与函数解析
快应用是基于 nodejs 开发的, 因此我们必须掌握 JavaScript https://www.2cto.com/kf/qianduan/JS/ 这门语言, 接下来的博客中, 我们就重点学习 nodejs 必须掌握的 JavaScript 基础知识.
JavaScript 基础
类型
JavaScript 类型可以分为两种: 基本类型和复杂类型.
基本类型: number,boolean,string,null,undefined.
复杂类型: array,function,object.
访问基本类型时访问的是值, 而访问复杂类型访问的是对值的引用. 举例:
- // 基本类型
- var a = 1;
- var b = a;
- b = 2;
- // 输出 a 的值为 1,b 的值为 2
- // 复杂类型
- var a = {'mm','nn'};
- var b = a;
- b[0] = 'pp';
- // 输出 a[0] 为 pp,b[0] 也为 pp;
这个例子就说明复杂类型中把一个对象赋值给另一个对象, 这两个对象指向的同一个地址, 所以改动其中一个对象的值, 另一个也会跟着改变.
注意:
因为 JavaScript 中变量的声明都是用 var 关键字, 所以就不容易区分变量值的类型, 这个时候就要用到 typeof 和 instanceof 两个关键字了.
typeof : 可以获取一个变量的类型, 返回值为变量类型.
instanceof : 与 java 关键字 instanceof 一样, 判断一个变量是哪种类型, 返回值为 boolean.
与 Java 类似的是, JavaScript 里面也有构造函数这一说法, 比如 string 类型, 下面就是创建字符串的两种方式:
- var a = 'abc';
- var b = newString('abc');
- // 这两个变量输出的都是 abc
但是, 如果你对 a 和 b 使用 typeof 关键字, 会发现 a 是 string , 而 b 却是 object, 所以我们定义变量的时候尽量使用直观的方式来定义, 尽量不使用 new.
另外, 在 if 判断中, 除了 false 之外, null,undefined,' ',0 这些都会被判断为 false, 比如:
- var a = 0;
- if(a){
- // 不会执行
- }
函数
与 java 中的函数很类似, 但是 JavaScript 中函数是需要关键字 function, 如下:
- function funA(arg0, arg1, ... argN) {
- // 函数体
- }
注意:
1, 函数参数不需要声明类型, 只写形参的名称就可以了.
2, 声明时不需要指定返回值类型, return 可以有, 也可以没有.
3,javascript 中的函数没有重载的形式, 后定义的函数会直接覆盖前面的函数.
4, 一个函数可以接收任意个参数.
上面第三点举例:
- function funA(){
- alert("11");
- };
- function funA('aa','bb'){
- alert("22");
- };
调用 funA(); 结果输出 11 .
总结
这里总结一下函数的特点:
1, 使用 function 关键字定义函数.
2, 没有任何的返回值类型.
3, 函数的定义优先执行, 与顺序无关.
4, 可以通过函数名赋值函数, 函数变量的类型是 function 对象.
5, 参数列表不能有 var 关键字.
6, 函数的参数列表在具体调用的时候实参个数可以和形参个数不同.
7,JavaScript 函数天然的支持可变参数.
8, 同名的函数最后声明会覆盖前面以声明. Javascript 中没有函数重载.
来源: http://www.jianshu.com/p/e7635c26c7d8