zoukankan      html  css  js  c++  java
  • JavaScript高级程序设计

    1. 变量

    javascript中的变量是松散型,可以用来保存任何类型的数据。

    用var操作符定义的变量将成为定义该变量的作用域中的局部变量。

    省略var操作符后可以创建一个全局变量。(不推荐)

    可以使用一条语句定义多个变量:

    var message = "hi",
        found = false;
        age = 26;

    2. 数据类型

    简单数据类型:undefined, Null, Boolean, Number, String.

    复杂数据类型:Object。 Object本质上是由一组无序的名值对组成的。

    • typeof 检测给定变量的数据类型,是一个操作符而不是函数
    • Undefined 包含undefined值得变量与尚未定义的变量不一样:
    var message;
    alert(message); //undefined
    alert(age);       // 发生错误
    • Null 如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其它值。
    • Boolean 该类型只有两个字面值:true和false。虽然字面值只有两个,但可以对任何数据类型的值调用Boolean函数,就会返回一个Boolean值。

    转化为true的:

      Boolean(任何非空字符串)

      Boolean(任何非零数字值)

      Boolean(任何对象)

    转化为false的:

      Boolean("")

      Boolean(0 和 NaN)

      Boolean(null)

      Boolean(undifined)

    • Number

    Number采用的是IEEE 754 64位双精度浮点数编码。

    八进制字面值的第一位必须是0,然后是八进制数字序列(0-7)。如果字面值中的数字超过7,那么第一个0会被忽略,后面的数值将被当作十进制数值解析。

    var num1 = 070; // 八进制56
    var num2 = 079; // 无效的八进制,转化为十进制79
    var num3 = 08;  // 无效的八进制,转化为十进制8

    十六进制字面值的前两位必须是0x.

    在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换为十进制数值。

    浮点数的最高精度是17位小数。3.125e7 = 3.125 * 10^7.

    4, 由于ECMAScript中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到。

    5,with语句

      with语句的作用是将代码的作用域设置到一个特定的对象中:with(expression) statement;

    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;
    }

    上例中,使用with语句关联了location对象,这意味着在with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名属性,则以location对象属性的值作为变量的值。

    6, switch语句

    可以在switch语句中使用任何数据类型,无论是字符串还是对象都没有问题。

    7, 函数

      ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数时什么数据类型。原因是ECMAScript中的参数在内部是用一个数组来表示的,函数接受到的是中都是这个数组,而不关心数组中包含哪些参数。

      ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数。

      ECMAScript不能像传统意义上那样实现重载。如果在ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。

      所有函数的参数都是按值传递的,也就是说把函数外部的值复制给函数内部的参数。

      instanceof可以检测引用是什么类型的对象。

    8, 执行环境及作用域

      每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。

      全局执行环境是最外围的一个执行环境。在Web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。某个执行环境中的所有代码执行完毕之后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁。

      内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。每个环境都可以向上搜索,但不能向下搜索。

  • 相关阅读:
    正确率、召回率和 F 值
    柯西序列 转自http://blog.sina.com.cn/coopld
    web用户非正常退出的问题
    uploadify上传的文件
    10270 : 青蛙的游戏
    10117 : 数独游戏
    10101 : 正面交锋
    10049 : 凯的菱形
    DARE YOU CLICK ME???(你敢点我吗???)
    高精度专辑(1码题库)
  • 原文地址:https://www.cnblogs.com/IvySue/p/7109662.html
Copyright © 2011-2022 走看看