zoukankan      html  css  js  c++  java
  • JavaScript基础 ( 3 章 )

    严格模式

    ECMAScript 5 引入了严格模式, 要在整个脚本中启用严格模式, 可在顶部添加如下代码:

    "use strict";

    在函数内部执行这条语句, 则表示这个函数要在严格模式下运行:

    function doSomething() {

      "use strict";

      // 函数体

    }

    支持严格模式的浏览器版本 IE10+, Firefox 4+, Safari 5.1+, Opera 12+, Chrome

    最好在每条语句后边都加 ;号

    变量在定义时, 最好直接给与初始化.

    function test() {

      var message = "hi"  // 这是一个局部变量

    }

    function test() {

      message = "hi"  // 这是一个全局变量, 即省略 var 就可以定义全局变量, 不推荐这样做.

    }

    1.For … In 循环

    For … In 声明用语遍历叔祖或者对象的属性 .

    For...In
     1 <html> 
     2 <body> 
     3 
     4 <script type="text/javascript"> 
     5 var x 
     6 var mycars = new Array() 
     7 mycars[0] = "Saab" 
     8 mycars[1] = "Volvo" 
     9 mycars[2] = "BMW" 
    10 
    11 for (x in mycars)         // 此处, x 作为下标,mycars是数组名字 
    12 { 
    13 document.write(mycars[x] + "<br />") 
    14 } 
    15 </script> 
    16 
    17 </body> 
    18 </html>

    2. 拆分行

    document.write( “Hello \

    World !”) ;

    3. 数据类型

    简单类型

    Undefined  // 这个值未定义

    Null   -> 是一种对象 typeof( null )  “object”

    Boolean

    Number

    String

    复杂类型

    Object

    typeof(message) , typeof(95) 等等,因为JavaScript是松散类型。(var f = 10 ; f = “nihao”; )

    typeof 操作符

    "underfined" // 未定义

    "boolean"  // 波尔类型

    "String"  // 这是一个字符串

    "number" // 这是一个数值

    "object"  // 这是一个对象或 null

    "function" // 这是一个函数

    细说
    undefined :  ( 只有一个值 )
    • 声明变量时,未初始化,则是 undefined类型 ( 所以声名变量时一定要初始化 )
    • undefined与未定义变量的区别 : 例如 var message ; alert(message) ; // undefined , alert( age ) //产生错误,因为 age未定义,对于未声明过的变量只能执行 typepf 检测其数据类型,并且未定义的变量也是 undefined类型 ( 与定义了但是未初始化一样 ) ,所以当定义变量时一定要初始化,以区别 是定义了变量未初始化还是压根就没有定义此变量。
    Null : ( 只有一个值 )
    • typeof( null )   // 返回 Object , 可见 null 是对象Object 类型
    • 定义对象引用时,如果发现没有指定的话,则要指定 null

    例如 var car = null;

    alert(typeof car);  // "object"

    Boolean 类型 : ( true , false )
    • var found = true ;    var found = false ;         // true , false 区分大小写 .
    Number 类型
    • 十进制整数   var number = 55 ;
    • 八进制整数   var number = 070 ;
    • 十六进制整数 var hexNum = 0x1f ;
    • 浮点数 var floatNum = 1.1 ;   var floatNum = 10.0 ;    // 虽然是整数,但是解析成小数, 浮点数相加可能出错 0.1 + 0.2 不一定等于 0.3 ,所以不要轻易判断两个浮点数相加
    • e表示  var floatNum = 3.125e7 ;    // 等于 31250000   var floatNum = 3e-17 ;    // 等于 0.000000000000003
    NaN ( 特殊类型 , 即 非数值 )
    • 任何数 除以 0 都会返回 NaN .   NaN类型属于特殊类型,不能用来判断,例如 NaN == NaN,isNaN( ) 函数判断 NaN类型
    数值转换函数 ( Number( ) , parseInt( ) , parseFloat( ) , 第一个可以转换任何类型,后两个只能转换字符串 )
    • Number : Boolean类型 true 是 1,false 是 0,null 返回 0 , undefined 返回 NaN , 字符串 只有数字例如 “123”则会转换成123,如果是十六进制数  例如  “0xf”则会转变成十进制整数 , 空字符串 转换 0 , 如果字符串包括其他字符则转换成 NaN。( 不常用 )
    • parseInt : 找到第一个非空格字符,如果第一个字符不是数字或负号,返回 NaN,直到碰到第一个不是数字的符号,包括小数点。例如”1234blue”parseInt解析后是 1234,”22.5”解析后是22。(parseInt,这个函数肯定要只返回 Int类型,看名字都看的出 ),各种进制都解析的出。parseInt( “0xAF”, 16 ) 如果你知道是16进制数,还可以象这样提前规定。建议使用这种,清晰明了,例如 parseInt( “10”,2 )  返回 2 , parseInt( “10”, 10 ) 返回 10 ,所以还是指定比较好。
    • parseFloat : 类似 parseInt, 第一个小数点有效,向后的字母或者小数点等都类似 paseInt 无效。
    String 类型

    单引号, 或双引号定义的字符串, 例如:

    var firstName = "niky";

    var lastName = 'Kaka';

    • 特殊字面量 : \n 换行,\t 制表,\b 空格,\r 回车,\f 进纸,\\ 斜杠,\' 单引号( ‘He said, \’hey.\’’),\”双引号,\xnn 以16进制表示,\unnn 以16进制的另一种形式显示。
    • length 表示长度,例如:text.length
    • 转换为字符串 有两种形式 1) toString 方法 var age = 11 ; var ageString = age.toString(10) ;  --> 这个10表示10进制数  undefined 和 null没有 toString() 方法   2) String方法,所有值都可以调用,如果该值有 toString方法则调用之,如果是null返回 “null”,如果是undefined返回”undefined”

    var num = 10;

    alert(num.toString());  // "10" 默认的就是按照10进制数进行转换.

    alert(num.toString(2)); // "1010" 这个2 表示是按照2进制数转换, 10的2进制表示就是 "1010"

    Object 类型 *
    • JavaScript 的对象其实就是一组数据和功能的集合。var o = new Object() ; 仅仅创建 Object 的实例并没有什么用处,但是 Object类型是所有它的实例的基础 ( class ) , 换句话说 Object 类型所具有的任何属性和方法也同样存在与更具体的对象中。Object 每个实例都具有下列属性和方法:
      • constructor - 保存着用于创建当前对象的函数,构造函数,例如 Object ( ) ;  --> var o = new Object( ) ;
      • hasOwnProperty ( propertyName ) - 用于检查给定的属性在当前对象实例中( 而不是在实例的原型中 ) 是否存在。例如 o.hasOwnProperty( “name” ) ;
      • isPrototypeOf( object ) - 用于检查传入的对象是否是另一个对象的原型
      • propertyIsEnumerable( propertyName ) - 用于检查给定的属性是否能够使用 for-in 语句
      • toString( ) - 返回对象的字符串表示
      • valueOf( ) - 返回对象的字符串,数值,或布尔值表示,通常与 toString( )方法返回相同值 .

    操作符 : == , != , === , !== ( “55” == 55  返回 true , “55” === 55 返回 false , 前边只判断数值是否相等,后边是数值类型一起判断 )

    位操作符:

    ~ 按位非:

    var num1 = 25;   // 二进制       00000000000000000000000000011001  ( 共32位 )

    var num2 = ~num1;  // 二进制 11111111111111111111111111100110  ( 共32位 )

    & 按位与

    var result = 25 & 3;

    | 按位或

    var result = 25 | 3;

    ^ 按位异或

    var result = 25 ^ 3;

    << 左移

    var oldValue = 2;                   // 等于2进制 10

    var newValue = oldValue << 5;   // 等于2进制 1000000 , 十进制的 64

    左移一次 等于乘以2, 左移5次, 等于乘以5次2, 所以最后结果是 64

    >> 右移

    var oldValue = 64;                      // 1000000, 64

    var newValue = oldValue >> 5;   //  10, 十进制的 2

    >>> 无符号右移

    布尔操作符:

    ! 逻辑非

    && 逻辑与

    || 逻辑或

    条件操作符:

    varibale = boolean_expression ? true_value : faluse_value;

    var max = (num1 > num2) ? num1 : num2;

    逗号操作符:

    var num1 = 1,

         num2 = 2,

         num3 = 3;

    switch - case 语句:

    switch(i) {

      case 25:

           alert("25");

           break;

       case 26:

           alert("26");

           break;

       default:

           alert("other");

           break;

    }

    switch 同样支持类似 C 一样的合并功能, 即 case 后不加 break, 那么两个 case 就会结合在一起.

    switch (“hello world”) {

        case "hello" + " world":

        case 26:

           alert("number");

           break;

        default:

           alert("others");

           break;

    }

    以上可以看出, switch 支持各种类型, 变量也好, 常量也好, 很灵活.

    switch (true) {

       case num < 0:

          alert("this one is true");

          break;

       case num >= 0 && num <= 10:

         alert("this is true");

         break;

       default:

         alert("others");

         break;

    }

    4. 函数

    不同之处在与参数传递, 解析器不会判断你传递的参数是否正确,数量或数据类型都无所谓, 因为在函数内部有个arguments数组用来接收参数,并且可以在函数内部直接使用,例如直接使用arguments.length, 可以判断究竟传过来的实际参数是哪些.例如 ( 因为JavaScript中的数组可以存放不同类型的多个数据 ) 也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个,三个甚至不传递参数。

    可以通过判断argument 来执行不同代码

    argument
    1 function doAdd (num1, num2) {
    2   if (arguments.length ==1 ) {
    3     alert( num1 + 10 );
    4   } else if (arguments.length ==2 ) {
    5     alert( arguments[0] + num2 );
    6   }
    7 }

    doAdd( 10 );  // 20

    doAdd(30, 20);  // 50

    最后:没有传递值的命名参数将自动被赋予 undefined值,这就跟定义了变量但是没初始化一样。

    没有重载,一个函数名就是一个函数。如果定义了2个,则下边的会将上边的函数覆盖。上边的函数将不再能够使用。可以模仿重载-->通过不同参数。但本质上是一个函数。

    5. 变量声明及命名规则

    定义变量时要进行初始化   --> 这样做的好处就是当发现某个变量是 underfined, 则表明此变量是真的未定义而不是未初始化

  • 相关阅读:
    工厂模式
    Bootstrap 日历
    处理乱码
    Eclipse常用快捷键
    C#_XML与Object转换
    jQuery选择函数
    Bootstrap如何正确引用字体图标
    js上拉加载、下拉刷新的插件
    js通用对象数组冒牌排序
    关于js跨域
  • 原文地址:https://www.cnblogs.com/moveofgod/p/2690506.html
Copyright © 2011-2022 走看看