在javascript的众多运算符里,提供了三个逻辑运算符&&、||和!,噢?! 是高级语言都提供的。按我们对逻辑运算的正常认识,逻辑运算的结果因该是ture或者false。但是javascript的逻辑运算却不完全是这么定义的,这里只有!运算符总是返回true|false,而||和&&运算比较的好玩。
javascript对于逻辑运算的true|false是这么定义的:
所有对象都被认为是 true。
字符串当且仅当为空(""或'')时才被认为是 false。
null 和未定义的均被认为是 false。
数字当且仅当为 0 时才是 false。
可是逻辑运算符||和&&虽然遵循上面的定义规则,但是它们返回的值却很有意思。
对于&&运算,按照上面的规...
作为一名网站开发WEB前端工程师,对自己开发的网站项目应该尽可能地对其性能进行优化,现在互联网上搜索到的网站性能优化多是翻译转载自Yahoo14条或34条。Yahoo的优化建议关注在大的方面,下面,W3C Group为大家呈现WEB前端开发高性能优化部分之JavaScript的优化细节!
一、避免出现脚本失控
不论什么脚本,在任何时间、任何浏览器上执行,都不应该超过100毫秒。如果实际执行的时间长于这个底限,一定要将进程分解成若干更小的代码段。
脚本失控基本上有以下四个方面的原因:
1. 在循环中执行了太多的操作
解决这个问题的诀窍就是用下面这两个问题来评估每个循环:
这个循环必须要同步执行么?
循环里面的数据,必...
描述
语言要素
返回在模式匹配中找到的最近的九条记录。
$1...$9 属性
返回一个数的绝对值。
abs 方法
返回一个数的反余弦。
acos 方法
启用并返回一个 Automation 对象的引用。
ActiveXObject 对象
将两个数相加或连接两个字符串。
加法运算符(+)
在对象的指定文本两端加上一个带 NAME 属性的...
Jscript 脚本中的语句一般是按照写的顺序来运行的。这种运行称为顺序运行,是程序流的默认方向。
与顺序运行不同,另一种运行将程序流转换到脚本的另外的部分。也就是,不按顺序运行下一条语句,而是运行另外的语句。
要使脚本可用,该控制的转换必须以逻辑方式执行。程序控制的转换是基于一个“决定”,这个“决定”结果是真或假(返回 Boolean 型 true 或 false)。 创建一个表达式,然后测试其是否为真。主要有两种程序结构实现本功能。
第一种是选择结构。用来指明两种程序流方向,在程序中创建一个交叉点(像岔路)。在 Jscript 中有四种选择结构可用。
单一选择结构(if),
二路选择结构(if/el...
Microsoft Jscript 提供了 11 个内部(或“内置”)对象。它们是Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error 以及 String 对象。每一个对象有相关的方法和属性,这在语言参考中有详细的描述。本节中也描述了某些对象。
Array 对象
数组下标可以被认为是对象的属性,它是通过数字索引来引用的。注意添加到数组中的已命名的属性不能通过数字来索引;它们是与数组元素分离的。
使用 new 运算符和 Array() 构造器 生成一个新的数组,如下面的示例。
以下为引用的内容: var theMonths = new Array(12);
theMonths[0] = "Jan";
theMonths[1] = &qu...
使用构造函数来创建对象
构造函数是一个函数,调用它来例示并初始化特殊类型的对象。可以使用 new 关键字来调用一个构造函数。下面给出了使用构造函数的新示例。
以下为引用的内容: var myObject = new Object(); // 创建没有属性的通用对象。
var myBirthday = new Date(1961, 5, 10); // 创建一个 Date 对象。
var myCar = new Car(); // 创建一个用户定义的对象,并初始化其属性。 通过构造函数将一个参数作为特定的 this 关键字的值传递给新创建的空对象。然后构造函数负责为新对象执行适应的初始化(创建属性并给出其初始值)。完成后,构造函数返回它所构造的对象的一个参数。
编写...
递归是一种重要的编程技术。该方法用于让一个函数从其内部调用其自身。一个示例就是计算阶乘。0 的阶乘被特别地定义为 1。 更大数的阶乘是通过计算 1 * 2 * ...来求得的,每次增加 1,直至达到要计算其阶乘的那个数。
下面的段落是用文字定义的计算阶乘的一个函数。
“如果这个数小于零,则拒绝接收。如果不是一个整数,则将其向下舍入为相邻的整数。如果这个数为 0,则其阶乘为 1。如果这个数大于 0,则将其与相邻较小的数的阶乘相乘。”
要计算任何大于 0 的数的阶乘,至少需要计算一个其他数的阶乘。用来实现这个功能的函数就是已经位于其中的函数;该函数在执行当前的这个数之前,必须调用它本身来计算相邻的较...
JScript 有两种变量范围:全局和局部。如果在任何函数定义之外声明了一个变量,则该变量为全局变量,且该变量的值在整个持续范围内都可以访问和修改。如果在函数定义内声明了一个变量,则该变量为局部变量。每次执行该函数时都会创建和破坏该变量;且它不能被该函数外的任何事物访问。
像 C++ 这样的语言也有“块范围”。在这里,任何一对“{}”都定义新的范围。JScript 不支持块范围。
一个局部变量的名称可以与某个全局变量的名称相同,但这是完全不同和独立的两个变量。因此,更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内,只有该局部变量有意义
以下是Javascript代码:【复制...
复制、传递和比较数据
在 JScript 中,对数据的处理取决于该数据的类型。
按值和按引用的比较
Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。
对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript">
var theP; //P标签对象
var show=function(msg){ //直接定义 function show(msg) 效果是一样的
return function(){
alert(msg+" f...
JScript 中的数组是稀疏的。也就是说,如果一个数组具有三个元素,编号分别为 0、1 和 2,您就可以创建元素 50,而不必担心从 3 到 49 的参数。如果该数组有一个自动的 length 变量,(请参阅内部对象了解有关数组长度的自动监控的说明),该 length 变量被设为 51,而不是 4。当然您可以创建各元素的编号之间没有间隙的数组,不过没有必要这样做。
在 JScript 中,对象和数组几乎相同。两个主要差别是对象没有自动长度属性,而数组没有对象的属性和方法。
数组寻址
使用方括号“[]”来寻址数组。方括号中是一个数值或一个值为整数的表达式。下面的示例假定在脚本的其他地方已定义了entryNum 变量,且已赋值。...
JScript 提供了一些特殊字符,允许在字符串中包括一些无法直接键入的字符。每个字符都以反斜杠开始。反斜杠是一个转义字符,表示 JScript 解释器下面的字符为特殊字符。
转义序列 字符
b 退格
f 走纸换页
n 换行
r 回车
t 横向跳格 (Ctrl-I)
' 单引号
" 双引号
反斜杠
请注意,由于反斜杠本身用作转义符,因此不能直接在脚本中键入一个反斜杠。如果要产生一个反斜杠,必须一起键入两个反斜杠 ()。
document.write('The image path is C:webstuffmypagegifsgarden.gif.');
document.write('The caption reads, "After the snow of '97. Grandma's house is covered."');...
如果不够细致,任何编程语言都有一些可能发生错误的地方,而且每种语言都有其特殊之处。例如,对于 null 值: JScript 中这个值与 C 或 C++ 语言中的 Null 值所起的作用是不一样的。
下面提供了一些在编写 JScript 脚本时可能遇到的问题。
语法错误
由于编程语言中的语法比自然语言的语法要严格得多,因此在编写脚本时对细节应倍加关注。例如,如果您本意是将字符串作为某个参数,但是在键入时忘了使用引号引起来,就会产生问题。
脚本解释顺序
对 JScript 的解释是 Web 浏览器的 HTML 语法分析处理的一部分。因此,如果在文档的 <HEAD> 标识中放置了一个脚本,则将在检查所有...
使用条件编译可以使用 Jscript 语言的新特性并且与不支持该特性的老版本兼容。
用 @cc_on 语句、@if 或 @set 语句来激活条件编译。条件编译的某些典型用途包括使用 Jscript 中的新特性、在脚本中嵌入调试支持以及跟踪代码的运行。
一般将条件编译代码放在注释中,所以不能理解条件编译的宿主(如 Netscape Navigator)就忽略了条件编译。下面是一个示例。
/*@cc_on @*/
/*@if (@_jscript_version >= 4)
alert("JScript version 4 or better");
@else @*/
alert("You need a more recent script engine.");
/*@end @*/
本示例使用了特殊的注释分隔符,该分隔符只有在 @c...
下面是条件编译可用的预定义变量。如果变量不是 true,就不被定义或者作为 NaN 处理。
变量 描述
@_win32 在 Win32 系统上运行为 true。
@_win16 在 Win16 系统上运行为 true。
@_mac 在 Apple Macintosh 系统上运行为 true。
@_alpha 在 DEC Alpha 处理器上运行为 true。
@_x86 在 Intel 处理器上运行为 true。
@_mc680x0 在 Motorola 680x0 处理器上运行为 true。
@_PowerPC 在 Motorola PowerPC 处理器上运行为 true。
@_jscript 永远为 true。
@_jscript_build 包含 Jscript 脚本引擎创建号。
@_jscript_version 包含以 major、minor 为格式的 Jscript 版本号。...
Microsoft JScript 提供了两种方式来在浏览器中直接显示数据。可以使用write() 和 writeln(),这两个函数是document 对象的方法。也可以在浏览器中以表格的方式显示信息,以及用 警告、提示和确认 消息框来显示信息。
使用document.write() 和 document.writeln()
显示信息最常用的方式是 document 对象的 write() 方法。该方法用一个字符串作为其参数,并在浏览器中显示。该字符串可以是普通文本或 HTML。
字符串可以用单引号或双引号引起来。这样可以引用那些包含引号或撇号的内容。
document.write("Pi is approximately equal to " + Math.PI);
document.write();
注意 下面的简...