zoukankan      html  css  js  c++  java
  • 《javascript高级程序设计》第三章学习笔记

    Undefined类型

    1. 该类型只有一个值,即undefined。
    2. 对未初始化的变量和未定义的变量,用typeof检测,都会返回‘undefined’

    Null类型

    1. 该类型只有一个值,null。并且从逻辑角度看,null值表示一个空对象指针,所以typeof null =='object'。
    2. 只要意在保存对象的变量还没有真正的保存对象,就应该明确的让该变量保存null值。
    var a = null;
    if (a) {
    	a.again = 1;
    } else {
    	a.again = 2;
    }
    //这种情况会报错
    var a = {};
    if (a) {
    	a.again = 1;
    } else {
    	a.again = 2;
    }
    
    //这种情况不会报错
    

    Boolean类型

    1. false值总结:

      1.1 Number类型:0,-0,NaN.
      1.2 Undefined : undefined。
      1.3 Null : null.
      1.4 String : ''.
      1.5 Boolean :false.

    Number类型

    1. 浮点数精度问题
    var c = 0.1+0.2;
    c!=0.3;
    
    1. 数值范围

    2.1 某次计返回infinity的话,没法参与下次计算,因为infinity不能参与计算,可以用isFinite()来检测。

    1. NaN != NaN
    2. isNaN()函数可以用来检测一个变量是否可以转化为数值.
    parseInt(''); //NaN
    Number('') == 0
    
    1. parseInt()与parseFloat()的区别:parseFloat()始终会忽略前导的0;parseFloat()只会解析十进制值,没有第二个参数制定基数的说法。

    2. 一个值转化为字符串有两种方式:toString()[Null,undefined值没有这个方法],String().

      6.1 String():在不知道要转化的值是不是null或者undefined的时候,可以选择。可以将任何类型的值转化为字符串。

      String(null)       //'null'
      String(undefined)  //'undefined'
      

    布尔操作

    1. 一共有三个:非,与,或。
    Boolean({})  ///true
    
    1. 不能在逻辑与操作中使用未定义的值,会报错。

    乘性操作

    1. 如果参与乘法计算的某个操作不是数值,后台会先使用Number()转型函数将其转换为数值

    加性操作

    1. 如果有一个操作数是字符串,泽相当于拼接字符串。
    var b = '123'+78;
    //b;
    //"12378"
    var a='as'+12;
    //a;
    //"as12"
    var c='e'+'f';
    //c;
    //"ef"
    
    1. 如果有一个操作数是对象、数值或者布尔值:会调用他们的toString()方法取得字符串值,然后用字符串的相加规则,undefined和null调用String()方法,取得'undefined'和'null'。
    
    

    关系操作(>,<,=,<=,>=)

    1. 总结:都是字符串的话,直接比较,其他的情况都要先将两个操作上转化为数值,再比较。

    2. 注意: 如果字符串操作数不能被转化为合理的数值,比如NaN,任何和NaN进行的关系比较,都是false.

    3. null == undefined //true

    4 . null === undefined //false

    for-in

    1. ECMAScript对象属性没有顺序,通过for-in循环输出的属性名的顺序是不可预测的。具体来讲,所有的属性都会被返回来,但是返回的先后顺序可能根据浏览器有所不同。

    2. 为了保证最大限度的兼容性,需要在使用for-in循环之前,先检测确认该对象的值是不是nulll或者undefeined.(因为有的要报错,有的会直接终止循环,但不报错)。

    3. sarfari3以前的版本会出现一个bug,有的属性会返回两次。(注意兼容性 )

    with语句

    1. with语句是将代码的作用域设置到一个特定的对象中。

    2. 严格模式下不允许使用,否则会报错。

    3. 定义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;
    }
    

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

    一般不建议使用with。

    函数

    1. 函数会在执行完return语句之后停止并立即退出,即位于return语句之后的任何代码都不会被执行。

    2. return语句也可以不带任何返回值。并且这种情况下,函数在停止执行后将返回undefined。

    3. 函数参数:在内部是用一个数组来表示的,所以不会在乎函数参数传递的数据类型和个数。(所以可以根据传入的参数个数,来模拟实现重载)

    4. arguments对象只是与数组类似,但并不是Array的实例。

  • 相关阅读:
    C#中的控件命名规范
    c# 执行javascript 脚本 并获得变量值 (winform与javascript交互 )
    C# Socket 实现的淘宝秒杀器(抢拍器)
    ASP函数 获取域名解析后的IP 获取远程网页的HTML代码
    C# 使用17方法编写Hello World程序(语法深度)
    框架内数据的打印。。。。
    有点厌恶写程序.....
    漂流的自白
    Asp.net中的页面乱码的问题
    在js 中根据 url 获取其参数
  • 原文地址:https://www.cnblogs.com/minb/p/5940175.html
Copyright © 2011-2022 走看看