• 《Javascript高级程序设计》--读书笔记(一)


    HTML中使用Javascript

    <script>元素

    `<script>`是像html中插入javascript的主要方法
    
    参数 解释
    async 可选,立即下载,不妨碍其他操作,在load事件前执行,不保证顺序
    charset 指定代码字符集
    defer 延迟至文档完全被解析和显示后再执行,延迟脚本先于DOMContentLoaded
    language 已废弃
    src 可选,外部js地址
    type 可选,类型text/javascript

    外部文件xhtml:<script type="text/javascript" src=""/>
    html:<script type="text/javascript" src=""></script>
    <noscript></noscript>中的内容只会在不支持脚本,支持但被禁止的浏览器中显示。

    基本类型

     ECMAScript有5种基本数据类型:Undefined,Null,Boolean,Number,String.
    
    • typeof 操作符
      typeof返回字符串,主要用于中检测值类型

      • “undefined”—–如果这个值未定义
      • “boolean”——如果这个值是布尔值
      • “string”——如果这个值是字符串
      • “number”—-如果这个值是数字
      • “object”—–如果这个值是对像或null
      • “function”——如果这个值是函数

      Safari5以下,chrom7以下对正则表达式调用typeof时返回”function”,而其他浏览器返回”object”.
      typeof 检查类型是,对变量未赋值和未声明变量都会返回“undefined”。

    • Undefined类型

         Undefined类型只有一个特殊的undefined值,使用var声明变量未赋值,默认undefined.
      
    • Null类型

         Null类型只有一个特殊值null .null值表示一个空指针,因而typeof返回“object”。而undefined派生与null值,ECMA-262规定null和undefined相等测试返回True
      
    • Boolean类型

         此类型有两个字面值:true和false. True和False不是布尔值,是标识符区分大小写。ECMAScript中所有类型都可以转换成Boolean值。
      

      各种数据类型通过Boolean()函数转换成Boolean。规则如下:

    数据类型 转换为true 转换为false
    Boolean true false
    String 任何非空字符串 “”空字符串
    Number 任何非0数字 0和NaN
    object 任何对像 null
    Undefined n/a undefined
    • Number类型

      使用IEEE745格式来表示整数和浮点数值。
      
      • 整数

          var intNumber = 50;//十进制
          var intOrdNumber = 016;//八进制
          var inthexNumber = 0x1A;//十六进制
      • 浮点数

         浮点数值最高精度17位小数,永远不要测定某个特定的浮点数值。
        
        var floatNumber = 1.1;
        var floatnumber = 3.1415e7;//等效于31415000
      • 数值范围

        ECMAScript能够表示的最小数值Number.MIN_VALUE 最大值Number.MAX_VALUE 超出范围转成Infinity。判断数值是否超出范围isFinite()函数
        
      • NaN

         即非数值(Not a Number)是个特殊值。表示一个本来要返回数值的操作数未返回数值的情况。例如:5/0 ;涉及NaN操作都返回NaN。NaN不等于任何值,包括本身。
        

        isNaN()接受任意一个参数,会试图转换成Number类型,不能转换返回ture

      • 数值转换

        1. Number()接受任何类型参数
            Boolean :tru和false分别转换为1和0
            数字值:简单传入返回
            null:0
            undefined:NaN
            字符串:只包含数字(符号)转换为十进制,忽略开头0
                         只包含浮点格式,转为浮点数
                         只包含有效 十六进制格式转换为大小相等的十进制
                         空字符串,转换为0
                         除此之外全为NaN
            object:调对像的valueOf()方法,依照前面规则,若结果为NaN,则调用对像的toString(),再次依照前面规则。
         2. parseInt() 参数为字符串
             空字符为NaN
             只识别字符串中的数字忽略字符能识别进制数
            ECMAScript3,5对于8进制存在差异,5不能解析8进制,应指定进制
            parseInt("0x11",16);
         3. parseFlaot()
            用法和paseInt()一样,不过始终忽略开头的0
        
    • String类型

      string和java的string类似,不可变,多个字符串连接,创建数组,通过.join()方法拼接。除null和undefined没有toString()方法,其他类型都有。toString()可指定进制数,将数字按相应进制输出。String()类型转换null输出"null" ,undefined输出“undefined”,其他和toString()一样。
      
    • Object

      ECMAScript中的对象是一组数据和功能的集合。对象可通new操作符创建。
      

      Object属性和方法

      名称 作用
      Constructor 构造函数
      hasOwnProperty(propertyName) 判断属性在当前对像中是否存在
      isPrototypeOf(object) 判断传入对象是否为另一个对象的原型
      propertyIsEunmerable(propertyName) 判断属性是否能枚举
      toLocaleString() 返回与环境对应的对像的字符串表示
      toString 返回字符串表示
      valueOf() 返回对像的字符串,数值,布尔值表示
    • 操作符
      大致和java中类似。
      注意
      1. 进行运算符操作时会按照Number()规则转换成numner进行操作.
      2. 任何对像,boolean测试始终为true.
      3. 空字符串,boolean测试为false.
      4. Infinity ,boolean测试为true.
      5. null,undefined,NaN,boolean测试为false

    • 语句

       语法和其他语言类似。for-in操作前应判断对像是否为null和undefined,不然抛错误,Safari3以前有BUG会导致某些属性被返回两次。label给代码添加标签一般和for配合使用。
      

      注意:

      1. javascript没有块作用域。
      2. 开发中不要使用with会使性能下降。
      3. switch可接受任意类型,case可以是变量或表达式
      4. function类似其他语言中方法
      5. 没有重载
      6. 参数可以任意类型,调用可以传任意参数,ECMAScript中参数在内部是用类似Aarry的对象argument.通过length属性来判断参数个数,通过这个特性可以模拟类似重载。

    变量,作用域和内存问题

    5种基本类型都是按值引用的,对象引用类型。
    

    ECMAScript中所有函数的参数都是按值传递的

    在向参数传递基本类型的值时,被传递的值被复制给局部变量。在向参数传递引用类型的值时,会把其内存地址复制给局部变量,这个局部变量的变化会反映到函数外部。
    
     function addTen(num){
         num+=10;
         return num;
     }
     var count = 20;
     var result  = addTen(count);
     alert(count);//20
     alert(result);//30
     function setName(obj){
        obj.name="Jon"
     };
     var person={};
     person.name = 'Tome';
     alert(person.name);//"Tome"
     setName(person);
     alert(person.name);//"Jon"
    • 检查类型
      typeof检查基本类型是得力助手,ECMAScript提供instanceof 检查引用类型的类型。其语法如下:

       reuslt = variable instanceof constructor
      

      在safari5以下Chrome7以下typeof检查正则时返回”function”,IE和Firefox中返回“object”

      ECMA-262规定任何内部实现[[call]]方法的对象都应该在应用typeof 时返回”function”

    • 执行环境及作用域

      执行环境 定义了变量或函数有权访问的其他数据,决定他们各自的行为。每个执行环境都有一个与之关联的变量对像(variable object),环境中定义的所有的变量和函数都保存在这个变量中。

      每个环境都可以向上搜索作用链,以查询变量和函数名;但任何环境都不能向下搜索作用链而进入另一个执行环境。
      try–catch;with可以延长作用链。

  • 相关阅读:
    ocx手动添加自定义消息
    ocx手动添加方法
    ocx手动添加事件
    c判断文件是否存在
    unity hub 更新之后,出现了好多问题。
    asp.net core系列 77 webapi响应压缩
    python:生成半年内的巡检日报execl
    python:selenium爬取boss网站被关小黑屋
    k8s 批量安装脚本
    sysctl: cannot stat /proc/sys/net/bridge/bridgenfcallip6tables: No such file or directory
  • 原文地址:https://www.cnblogs.com/jcheng996/p/5401482.html
Copyright © 2020-2023  润新知