《javascript高级程序设计》笔记

1,,使用defer 属性可以让脚本在文档完全呈现之后再执行。延迟脚本总是按照指定它们的顺序执行。
  使用 async 属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现。不能保证异步脚 本按照它们在页面中出现的顺序执行

2,typeof检测数据类型:

var message=2;

alert(typeof  message)  //number;

检测结果有:

 "undefined"——如果这个值未定义;

 "boolean"——如果这个值是布尔值;

 "string"——如果这个值是字符串;

 "number"——如果这个值是数值;

 "object"——如果这个值是对象或 null; 

"function"——如果这个值是函数。

3,基本数据类型:Undefined、Null、Boolean、Number ,String,Object 

4,Undefined 类型只有一个值,即特殊的 undefined。

对未初始化和未声明的变量执行 typeof 操作符都返回undefined 值;

Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null,。从逻辑角度来看,null 值表 示一个空对象指针,而这也正是使用 typeof 操作符检测 null 值时会返回"object"的原因

如果定义的变量准备在将来用于保存对象,那么好将该变量初始化为 null 而不是其他值,

undefined 值是派生自 null 值的,因此 它们的相等性测试要返回 true:
alert(null == undefined);    //true 

5,。要将一个值转换为其对应的 Boolean 值,可以调用转型函数 Boolean(),如下例所示: 
 
var message = "Hello world!"; var messageAsBoolean = Boolean(message); 

数据类型                                          转换为true的值                                                转换为false的值

Boolean                                                    true                                                                  false 

String                                               任何非空字符串                                               ""(空字符串)

Number                                      任何非零数字值(包括无穷大)                                 0 和NaN

Object                                                    任何对象                                                              null

Undefined                                                 n/a                                                               undefined  

 n/a(或 N/A),是 not applicable的缩写,意思是“不适用”。 

6, isNaN()这个函数接受一个参数,该参数可以 是任何类型,而函数会帮我们确定这个参数是否“不是数值“。

7,把非数值转换为数值:Number()、parseInt()和 parseFloat()。转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值

区别:number()中变量若是带有字母就不能够转换,但是parseInt()会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt() 就会返回 NaN。如 果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了 一个非数字字符,包括小数点。而parseFloat()只能解析十进制,但是它比parseInt()好的是,它可以解析浮点数

eg:

number("0001") //1

number(true);//1

number("yes");.//NaN

parseInt("070",  8 );//   56     (意思将070以八进制看待.)。

parseInt("math011.52") ;//11

parseInt("070");//70

parseFloat("11.52") ;//11.52

8, Boolean(x)  /转换成布尔

      Number(x)  //转换成数值

     x. toString(2)  或者   x.string()    或者   x+"  "   //转换成字符

9,操作符

++和--操作符不仅适用于整数,还可以用于字符串、布尔值、浮 点数值和对象:

1,一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减 1 的操作

2,一个不包含有效数字字符的字符串时,将变量的值设置为 NaN

3,对于布尔值 false 时,先将其转换为 0再执行加减 1的操作

4,对于对象,先调用对象的 valueOf()方法,以取得一个可供操作的值。然后对该值应用前述规则。

如果结果是 NaN,则在调用 toString()方法后再应用前述规 则。

var o = {  

   valueOf: function() {  

      return -1;  

  }}; 

o--;      // 值变成数值-2 

10,valueOf():

     1,valueOf() 方法可返回 Boolean 对象的原始值

var boo = new Boolean(false) document.write(boo.valueOf())    //false

     2,valueOf() 方法返回 Array 对象的原始值。

 var fruits = ["Banana", "Orange", "Apple", "Mango"];
var v=fruits.valueOf(); //   Banana,Orange,Apple,Mango

     3,valueOf()方法返回object对象自定义的valueOf()函数值

var o = {  valueOf: function() {  return -1;  }  }; 

 o--;      // 值变成数值-2 

     4,valueOf()函数的作用是返回该object自身。与toString()一样,定义类时可以实现新的valueOf()方法,从而返回需要的结果

总结:valueOf偏向于运算,toString偏向于显示。

在数值运算里,会优先调用valueOf(),如a + b;

在字符串运算里,会优先调用toString(),如alert(c)。

11,label语句:

在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的程序的位置。

Label 语句,按书本上说的语法是:

       Label: statement

       如: begin: for (var i = 0; i < 10 ; i++ ){

                         alert(i);

                   }

(未添加 Label):

        var num = 0;

        for (var i = 0 ; i < 10 ; i++){

             for (var j = 0 ; j < 10 ; j++){

                  if( i == 5 && j == 5 ){

                        break;

                  }

             num++;

             }

        }

        alert(num); // 循环在 i 为5,j 为5的时候跳出 j循环,但会继续执行 i 循环,输出 95

对比使用了 Label 之后的程序:(添加 Label 后)

    var num = 0;

    outPoint:

    for (var i = 0 ; i < 10 ; i++){

         for (var j = 0 ; j < 10 ; j++){

              if( i == 5 && j == 5 ){

                    break outPoint;

              }

         num++;

         }

    }

    alert(num); // 循环在 i 为5,j 为5的时候跳出双循环,返回到outPoint层继续执行,输出 55

12,with语句:

var qs = location.search.substring(1);

var hostName = location.hostname;

var url = location.href; 

如果使用 with 语句,可以把上面的代码改写成如下所示:
 with(location){    

var qs = search.substring(1);

    var hostName = hostname;    

var url = href; } 

猜你喜欢

转载自blog.csdn.net/kalinux/article/details/81625452