《JavaScript高级程序设计》总结一

来源:互联网 发布:卸载windows更新补丁 编辑:程序博客网 时间:2024/05/22 17:14

一. Javascipt组成部分

  • ECMAScript –>语法、类型、语句、关键字、保留字、操作符、对象
  • 文档对象模型(DOM) –>DOM把整个页面映射为一个多层节点结构。提供访问和操作页面内容的方法和接口
  • 浏览器对象模型(BOM) –>提供也浏览器交付的方法和接口

二. 使用< script>元素的方式

  • 直接在页面中嵌入JS代码
    将从上至下一次解释。在浏览器对script标签元素内部的所有代码求值完毕以前,页面中的其余内容都不会被浏览器加载或识别
  • 包含外部JS文件
    src属性必须,指向外部js文件的链接

    *.js扩展名不是必须的,因为浏览器不会检查包含js文件的扩展名。但是服务器通常还是需要看扩展名决定为响应应用哪种MIME类型。
    *现在web程序一般把js放在< body>元素中页面内容的后面。
    *script元素的defer属性,相当于立即下载,但遇到< /html>后再执行。至适用于外部脚本。与defer类似的async–异步脚本,但不保证下载的先后顺序。

三. 语法

  • 区分大小写
  • 标识符(变量、函数、属性的名字或函数的参数)
    –>采用驼峰大小写格式(第一个字母小写其他每个单词的首字母大写)
    –>第一个字符必须是字母,下划线_,或美元符号$
  • 注释
//单行注释/*    多行注释*/

四. 变量
ECMAScript的变量是松散类型的,就是可以保存任何类型的数据,换句话说就是每个变量仅仅是一个用于保存值得占位符而已。
*定义了但未经过初始化的变量会保存一个特殊的值 — undefined

五. 数据类型
基本数据类型:Undefined、Null、Boolean、Number、String
复杂数据类型:Object

*typeof操作符 –>检测变量的数据类型

  • Undefined类型:
    只有一个特殊的undefined值,对声明了但未初始化的变量和未声明的变量执行typeof操作符同样会返回undefined值
  • Null类型:
    只有一个特殊的null值。从逻辑的角度来看,null值表示一个空指针,而这也正是typeof操作符检测null时返回“object”的原因
var car = null;alert(car);    //"object"

如果定义的变量准备将来用于保存对象,那么最好将变量初始化为null。只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

if(a != null) {xxx}

*实际上undefined值是派生自null值,因此 null == undefined 是 true

  • Boolean类型:
    这里写图片描述

  • Number类型:
    整数、浮点数(最高精度17位)、NaN
    *NaN:用于本来要返回数值的操作数未返回数值的情况
                 特点:任何涉及NaN的操作都返回NaN;NaN与任何值都不相等,包括NaN本身
    *isNaN():会尝试将这个值转换为数值,不能被转换为数值的值都返回true

alert(isNaN(NaN));        //truealert(isNaN("10"));       //falsealert(isNaN("blue"));     //truealert(isNaN(false));      //flase(可以被转换为数值1)

*数值转化:Number()、parseInt()、parseFloat()

@   Number():如果是null返回0;true-1 flase-0;undefined-Na
N;如果字符串包含数字、十六进制等格式直接转换为相同大小的十进制整数值或浮点格式(八进制的0会忽略了);如果字符串是空的转换为0;如果字符串包含上述格式,则转换为NaN。如果是对象,调用valueOf()或toString()再按照前面的规则。
@   parseInt():是空字符串或第一个字符不是数字或负号,返回NaN;如果第一个是数字,则解析后续字符直到一个非数字(”123blue”–>123;”22.5”–>22);能识别八进制十六进制(parseInt(“016”,8))

  • String类型:
    *字符串是不可变的,也就是说,字符串一旦创建,他的值就不能改变。要改变某个变量保存的字符串,首先要消灭原来的字符串再把新的字符串填充该变量
    *转换为字符串toString()或使用+(加号操作符)与一个空字符串加在一起
  • Object类型:
    对象就是一组数据和功能的集合。

六. 操作符

  • 一元操作符 + / -
    *放在数值面前,对数值不产生影响直接运算,放在非数值的该操作符会项Number()一样执行转换。

  • 位操作符
    *按位非~、按位或|、按位与&、按位异或^、左移<<、有符号的右移>>、无符号的右移>>>

  • 布尔操作符

*逻辑非–!、逻辑与–&&、逻辑或–|

alert(!false);      //truealert(!"blue");     //false   非空字符串alert(!0);          //true    数值0alert(!NaN);        //true    null、NaN、undefinedalert(!123456);     //false   任意非0数字(包括Infinity)alert(!"");         //true    空字符串alert(!obj);        //false   对象
  • 加性操作符
    *有一个操作数是NaN返回NaN
    *有一个操作数是字符串,则将另一个操作数转换为字符串再字符串连接

  • 关系操作符
    *  <、>、<=、>
    *如果是两个字符串对比,则比较两字符串中对应位置的每个字符的字符编码值
    *如果有一个操作数是数值,则将另一个转换为数值进行比较,任何与NaN比较都返回false
    -相等操作符
    *相等和不相等——先转换在比较
    *全等和不全等——仅比较而不转换
    这里写图片描述

七. 语句
*if、while、do-while、for、for-in、label、break和continue、with、switch

八. 函数
*执行完return就停止并立即退出出,位于return后面的代码不会执行
*arguments对象与数组类似但不是Array实例。所有参数都是传递值不是引用传递。arguments对象中的值会自动反应到对应的命名参数,虽然值同步但是他们的内存是独立的。

0 0
原创粉丝点击