《JavaScript权威指南》笔记(二)

第二篇笔记的内容主要涉及:数据类型转换,函数、对象、数组的创建以及null与undefined的比较。

1. javascript中类型转换的方法

(1)数字-->字符串:

  1. number+" ";
  2. String(number);
  3. number.toString(n);         //n为2代表转为二进制,n为8代表转为八进制,默认是十进制
  4. number.toFixed(n);          //将数字转换为字符串且显示小数点后n位
  5. number.toExponential(n); //使用指数表示法把数字转换为字符串,小数点前1位,小数点后n位
  6. number.toPrecision(n);    //使用指定的有意义的n位来显示一个数字

(2)字符串-->数字:

  1. str-0;
  2. Number(str);
  3. parseInt(str);    //无法转换时返回NaN
  4. parseFloat(str); //无法转换时返回NaN

(3)其他类型-->布尔型:

  1. Boolean(x);
  2. var x_as_boolean = !!x;  //因为!运算符会先把它的运算数转换为一个布尔类型的值,然后再计算求非

2. javascript中的函数定义

在许多语言中,函数都只是语言的语法特性,可以被定义、调用,却不是数据类型。而javascript中的函数是真正的数值,可以被存储在变量、数组和对象中,还可作为参数传递给其他函数。当一个函数赋给某个对象的属性时,它常被当作那个对象的方法来引用。

3. javascript中函数的创建方法

  1. 常规做法:function square(x) { return x*x; }
  2. 函数直接量(lambda函数):
    1. var square = function(x) { return x*x; };                                          //匿名函数
    2. var f = function fact(x) { if(x<=1) return 1; else return x*fact(x-1);}; //指定函数名,用于递归
    3. f[0] = function(x) { return x*x; };                                                    //定义并存储函数到一个数组中
    4. a.sort(function(a,b) { return a-b; });                                //定义函数并将其作为参数传给另一个函数
    5. var tensquared = (function(x) { return x*x; })(10);                           //定义并调用函数
  3. 用构造函数定义:var square = new Function("x", "return x*x");

4. javascript中对象的创建方法

  1. 用构造函数定义:var o = new Object();
  2. 对象直接量:
    1. var point = {x:2.3, y:-1.2};
    2. var empty = {};
    3. var rectangle = { upperLeft: {x:2, y:2}, "lowerRight":{x:(point.x+side), y:point.y} };

5. javascript中数组的创建方法

  1. 用构造函数定义:
    1. var a = new Array(); a[0] = 1.2; a[1] = "js";
    2. var a = new Array(1.2, "js");
    3. var a = new Array(2);  //数组长度为2
  2. 数组直接量:
    1. var a = [1.2, "js"];                  //js是一种非类型语言,所以其数组元素不必具有相同的类型
    2. var empty = [];
    3. var matrix = [[1, 2, 3], [4, 5, 6]];             //嵌套(js不支持多维数组,但数组元素可以是数组)
    4. var base = 1024; var table = [base, base+1]; //变量做数组中的元素
    5. var sparseArray = [1, , , ,5];                          //数组中存放未定义元素

6. null与undefined的区别

(1)null是js的保留字(关键字),undefined则是ECMAScript V3中的全局变量,其初始值为undefined。

(2)null是对象类型的特殊值(“无对象”),它不是有效的对象、数组、数字、字符串和布尔值。

undefined则有三种情形:

  1. 使用了一个并未声明的变量
  2. 使用了一个已经声明但未赋值的变量
  3. 使用了一个并不存在的对象属性

(3)使用==判断时,null和undefined两值相等。要区分它们需要使用===或者typeof。

(4)用var声明的变量,若未赋值则初始值是undefined。

下一篇链接:《JavaScript权威指南》笔记(三)

上一篇链接:《JavaScript权威指南》笔记(一)

你可能感兴趣的:(JavaScript)