博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Javascript高级程序设计》--读书笔记(一)
阅读量:5347 次
发布时间:2019-06-15

本文共 3870 字,大约阅读时间需要 12 分钟。

HTML中使用Javascript

<script>元素

`
参数 解释
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可以延长作用链。

转载于:https://www.cnblogs.com/jcheng996/p/5401482.html

你可能感兴趣的文章
Java有没有goto?
查看>>
(转)makefile 的用法
查看>>
Linux云自动化运维第十六课
查看>>
1.秋招复习简单整理之红黑树性质
查看>>
hive基础2
查看>>
CocoaPods Mac App的安装和使用
查看>>
python 正则表达式匹配ip
查看>>
Flask实战-留言板-使用Faker生成虚拟数据 --
查看>>
解决VC++6.0 无法打开、无法添加工程文件
查看>>
ORA-01858: a non-numeric character was found where a numeric was expected
查看>>
Structure From Motion(二维运动图像中的三维重建)
查看>>
25复杂链表的复制
查看>>
2 Orchard汉化资源包的使用
查看>>
python3 property
查看>>
自定义控件注意点
查看>>
SSRS 报表 如何匿名查看
查看>>
JVM内存管理机制
查看>>
centos 安装Mysql
查看>>
简单通用Ajax函数
查看>>
【Android】ListView监听上下滑动(判断是否显示返回顶部按钮
查看>>