知识大全 编写高级JavaScript应用代码[2]
Posted 变量
篇首语:读书不要贪多,而是要多加思索,这样的读书使我获益不少。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 编写高级JavaScript应用代码[2]相关的知识,希望对你有一定的参考价值。
Java应用:编写高级JavaScript应用代码[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
很重要的一点是注意变量是否是在其所属范围的开始处声明的 有时这会导致意想不到的情况 eak(); var aNumber = ; function eak() var newThing = ; // 显式声明 newThing 变量 // 本语句将未定义的变量赋给 newThing 因为已有名为 aNumber 的局部变量 newThing = aNumber; //下一条语句将值 赋给局部的 aNumber aNumber = ; if (false) var aNumber; // 该语句永远不会执行 aNumber = ; // 该语句永远不会执行 // 条件语句结束 // 该函数定义结束
当 JScript 运行函数时 首先查找所有的变量声明
var someVariable;
并以未定义的初始值创建变量 如果变量被声明时有值
var someVariable = something ;
那么该变量仍以未定义的值初始化 并且只有在运行了声明行时才被声明值取代 假如曾经被声明过
JScript 在运行代码前处理变量声明 所以声明是位于一个条件块中还是其他某些结构中无关紧要 JScript 找到所有的变量后立即运行函数中的代码 如果变量是在函数中显式声明的 ? 也就是说 如果它出现于赋值表达式的左边但没有用 var 声明 ? 那么将把它创建为全局变量
复制 传递和比较数据
在 JScript 中 对数据的处理取决于该数据的类型
按值和按引用的比较
Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制 传递和比较的 当按值复制或传递时 将在计算机内存中分配一块空间并将原值复制到其中 然后 即使更改原来的值 也不会影响所复制的值(反过来也一样) 因为这两个值是独立的实体
对象 数组以及函数是按引用来复制 传递和比较的 当按地址复制或传递时 实际是创建一个指向原始项的指针 然后就像拷贝一样来使用该指针 如果随后更改原始项 则将同时更改原始项和复制项(反过来也一样) 实际上只有一个实体 复本 并不是一个真正的复本 而只是该数据的又一个引用
当按引用比较时 要想比较成功 两个变量必须参照完全相同的实体 例如 两个不同的 Array 对象即使包含相同的元素也将比较为不相等 要想比较成功 其中一个变量必须为另一个的参考 要想检查两个数组是否包含了相同的元素 比较 toString() 方法的结果
最后 字符串是按引用复制和传递的 但是是按值来比较的 请注意 假如有两个 String 对象(用 new String( something ) 创建的) 按引用比较它们 但是 如果其中一个或者两者都是字符串值的话 按值比较它们
注意 鉴于 ASCII和 ANSI 字符集的构造方法 按序列顺序大写字母位于小写字母的前面 例如 Zoo 小于 aardvark 如果想执行不区分大小写的匹配 可以对两个字符串调用 toUpperCase() 或 toLowerCase()
传递参数给函数
按值传递一个参数给函数就是制作该参数的一个独立复本 即一个只存在于该函数内的复本 即使按引用传递对象和数组时 如果直接在函数中用新值覆蓋原先的值 在函数外并不反映新值 只有在对象的属性或者数组的元素改变时 在函数外才可以看出
例如(使用 IE 对象模式) // 本代码段破坏(覆蓋)其参数 所以 // 调用代码中反映不出变化 function Clobber(param) // 破坏参数 在调用代码中 // 看不到 param = new Object(); param message = This will not work ; // 本段代码改变参数的属性 // 在调用代码中可看到属性改变 function Update(param) // 改变对象的属性 // 可从调用代码中看到改变 param message = I was changed ; // 创建一个对象 并赋给一个属性 var obj = new Object(); obj message = This is the original ; // 调用 Clobber 并输出 obj message 注意 它没有发生变化 Clobber(obj); window alert(obj message); // 仍然显示 This is the original // 调用 Update 并输出 obj message 注意 它已经被改变了 Update(obj); window alert(obj message); // 显示 I was changed
检验数据
当按值进行检验时 是比较两个截然不同的项以查看它们是否相等 通常 该比较是逐字节进行的 当按引用进行检验时 是看这两项是否是指向同一个原始项的指针 如果是 则比较结果是相等 如果不是 即使它们每个字节都包含完全一样的值 比较结果也为不相等
按引用复制和传递字符串能节约内存 但是由于在字符串被创建后不能进行更改 因此可以按值进行比较 这样可以检查两个字符串是否包含相同的内容 即使它们是完全独立产生的
cha138/Article/program/Java/JSP/201311/20709相关参考
Java应用:编写高级JavaScript应用代码[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
Java进阶:编写高级JavaScript应用代码[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
Java应用:编写高级JavaScript代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创
Java语言深入:编写高级JScript代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 创建
这篇文章介绍了javascript闭包的高级使用方法实例有需要的朋友可以参考一下 扩展Code:复制代码代码如下:varblogModule=(function(my) myA
Javascript代码如何应用到网页中 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在今
Eclipse工具开发:编写代码生成器[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
JavaScript脚本编写规范 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对于熟悉&nbs
用JavaScript编写程序实现文本滚动 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在一些
编写JScript代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 与其他许多编程语言一样Mi