您的当前位置:首页正文

使用jscript实现二进制读写脚本代码_javascript技巧

2023-12-02 来源:气吉美食网

因此,这里是一个很好的方式访问的二进制文件从JScript的。如果您要访问的这个对象从VBScript中,然后把它放在一个SWF文件。此对象已经被用于在愤怒将文件上载到Web服务,并已被证明是好的和快速的文件,在0-10 MB的地区。/** This is a fairly well optimized object which alows 访问的二进制文件从JScript的在Windows *作业系统。 *该文件的末尾是小的一套测试,以显示它如何 *用。您将需要adodb 2.5或更高版本。 *这将是使上最2000年机器和所有XP或更高 *机器。 * *版权:博士亚历山大j特纳-保留所有权利。 *请随时与使用此代码在任何您喜欢的方式 *只要您一个参考的地方,在评论 *我写的。function BinaryFile(name) { var adTypeBinary = 1 var adTypeText = 2 var adSaveCreateOverWrite = 2 // The trick - this is the 'old fassioned' not translation page // It lest javascript use strings to act like raw octets var codePage='437'; this.path=name; var forward = new Array(); var backward = new Array(); // Note - for better performance I should preconvert these hex // definitions to decimal - at some point :-) - AJT forward['80'] = '00C7'; forward['81'] = '00FC'; forward['82'] = '00E9'; forward['83'] = '00E2'; forward['84'] = '00E4'; forward['85'] = '00E0'; forward['86'] = '00E5'; forward['87'] = '00E7'; forward['88'] = '00EA'; forward['89'] = '00EB'; forward['8A'] = '00E8'; forward['8B'] = '00EF'; forward['8C'] = '00EE'; forward['8D'] = '00EC'; forward['8E'] = '00C4'; forward['8F'] = '00C5'; forward['90'] = '00C9'; forward['91'] = '00E6'; forward['92'] = '00C6'; forward['93'] = '00F4'; forward['94'] = '00F6'; forward['95'] = '00F2'; forward['96'] = '00FB'; forward['97'] = '00F9'; forward['98'] = '00FF'; forward['99'] = '00D6'; forward['9A'] = '00DC'; forward['9B'] = '00A2'; forward['9C'] = '00A3'; forward['9D'] = '00A5'; forward['9E'] = '20A7'; forward['9F'] = '0192'; forward['A0'] = '00E1'; forward['A1'] = '00ED'; forward['A2'] = '00F3'; forward['A3'] = '00FA'; forward['A4'] = '00F1'; forward['A5'] = '00D1'; forward['A6'] = '00AA'; forward['A7'] = '00BA'; forward['A8'] = '00BF'; forward['A9'] = '2310'; forward['AA'] = '00AC'; forward['AB'] = '00BD'; forward['AC'] = '00BC'; forward['AD'] = '00A1'; forward['AE'] = '00AB'; forward['AF'] = '00BB'; forward['B0'] = '2591'; forward['B1'] = '2592'; forward['B2'] = '2593'; forward['B3'] = '2502'; forward['B4'] = '2524'; forward['B5'] = '2561'; forward['B6'] = '2562'; forward['B7'] = '2556'; forward['B8'] = '2555'; forward['B9'] = '2563'; forward['BA'] = '2551'; forward['BB'] = '2557'; forward['BC'] = '255D'; forward['BD'] = '255C'; forward['BE'] = '255B'; forward['BF'] = '2510'; forward['C0'] = '2514'; forward['C1'] = '2534'; forward['C2'] = '252C'; forward['C3'] = '251C'; forward['C4'] = '2500'; forward['C5'] = '253C'; forward['C6'] = '255E'; forward['C7'] = '255F'; forward['C8'] = '255A'; forward['C9'] = '2554'; forward['CA'] = '2569'; forward['CB'] = '2566'; forward['CC'] = '2560'; forward['CD'] = '2550'; forward['CE'] = '256C'; forward['CF'] = '2567'; forward['D0'] = '2568'; forward['D1'] = '2564'; forward['D2'] = '2565'; forward['D3'] = '2559'; forward['D4'] = '2558'; forward['D5'] = '2552'; forward['D6'] = '2553'; forward['D7'] = '256B'; forward['D8'] = '256A'; forward['D9'] = '2518'; forward['DA'] = '250C'; forward['DB'] = '2588'; forward['DC'] = '2584'; forward['DD'] = '258C'; forward['DE'] = '2590'; forward['DF'] = '2580'; forward['E0'] = '03B1'; forward['E1'] = '00DF'; forward['E2'] = '0393'; forward['E3'] = '03C0'; forward['E4'] = '03A3'; forward['E5'] = '03C3'; forward['E6'] = '00B5'; forward['E7'] = '03C4'; forward['E8'] = '03A6'; forward['E9'] = '0398'; forward['EA'] = '03A9'; forward['EB'] = '03B4'; forward['EC'] = '221E'; forward['ED'] = '03C6'; forward['EE'] = '03B5'; forward['EF'] = '2229'; forward['F0'] = '2261'; forward['F1'] = '00B1'; forward['F2'] = '2265'; forward['F3'] = '2264'; forward['F4'] = '2320'; forward['F5'] = '2321'; forward['F6'] = '00F7'; forward['F7'] = '2248'; forward['F8'] = '00B0'; forward['F9'] = '2219'; forward['FA'] = '00B7'; forward['FB'] = '221A'; forward['FC'] = '207F'; forward['FD'] = '00B2'; forward['FE'] = '25A0'; forward['FF'] = '00A0'; backward['C7'] = '80'; backward['FC'] = '81'; backward['E9'] = '82'; backward['E2'] = '83'; backward['E4'] = '84'; backward['E0'] = '85'; backward['E5'] = '86'; backward['E7'] = '87'; backward['EA'] = '88'; backward['EB'] = '89'; backward['E8'] = '8A'; backward['EF'] = '8B'; backward['EE'] = '8C'; backward['EC'] = '8D'; backward['C4'] = '8E'; backward['C5'] = '8F'; backward['C9'] = '90'; backward['E6'] = '91'; backward['C6'] = '92'; backward['F4'] = '93'; backward['F6'] = '94'; backward['F2'] = '95'; backward['FB'] = '96'; backward['F9'] = '97'; backward['FF'] = '98'; backward['D6'] = '99'; backward['DC'] = '9A'; backward['A2'] = '9B'; backward['A3'] = '9C'; backward['A5'] = '9D'; backward['20A7'] = '9E'; backward['192'] = '9F'; backward['E1'] = 'A0'; backward['ED'] = 'A1'; backward['F3'] = 'A2'; backward['FA'] = 'A3'; backward['F1'] = 'A4'; backward['D1'] = 'A5'; backward['AA'] = 'A6'; backward['BA'] = 'A7'; backward['BF'] = 'A8'; backward['2310'] = 'A9'; backward['AC'] = 'AA'; backward['BD'] = 'AB'; backward['BC'] = 'AC'; backward['A1'] = 'AD'; backward['AB'] = 'AE'; backward['BB'] = 'AF'; backward['2591'] = 'B0'; backward['2592'] = 'B1'; backward['2593'] = 'B2'; backward['2502'] = 'B3'; backward['2524'] = 'B4'; backward['2561'] = 'B5'; backward['2562'] = 'B6'; backward['2556'] = 'B7'; backward['2555'] = 'B8'; backward['2563'] = 'B9'; backward['2551'] = 'BA'; backward['2557'] = 'BB'; backward['255D'] = 'BC'; backward['255C'] = 'BD'; backward['255B'] = 'BE'; backward['2510'] = 'BF'; backward['2514'] = 'C0'; backward['2534'] = 'C1'; backward['252C'] = 'C2'; backward['251C'] = 'C3'; backward['2500'] = 'C4'; backward['253C'] = 'C5'; backward['255E'] = 'C6'; backward['255F'] = 'C7'; backward['255A'] = 'C8'; backward['2554'] = 'C9'; backward['2569'] = 'CA'; backward['2566'] = 'CB'; backward['2560'] = 'CC'; backward['2550'] = 'CD'; backward['256C'] = 'CE'; backward['2567'] = 'CF'; backward['2568'] = 'D0'; backward['2564'] = 'D1'; backward['2565'] = 'D2'; backward['2559'] = 'D3'; backward['2558'] = 'D4'; backward['2552'] = 'D5'; backward['2553'] = 'D6'; backward['256B'] = 'D7'; backward['256A'] = 'D8'; backward['2518'] = 'D9'; backward['250C'] = 'DA'; backward['2588'] = 'DB'; backward['2584'] = 'DC'; backward['258C'] = 'DD'; backward['2590'] = 'DE'; backward['2580'] = 'DF'; backward['3B1'] = 'E0'; backward['DF'] = 'E1'; backward['393'] = 'E2'; backward['3C0'] = 'E3'; backward['3A3'] = 'E4'; backward['3C3'] = 'E5'; backward['B5'] = 'E6'; backward['3C4'] = 'E7'; backward['3A6'] = 'E8'; backward['398'] = 'E9'; backward['3A9'] = 'EA'; backward['3B4'] = 'EB'; backward['221E'] = 'EC'; backward['3C6'] = 'ED'; backward['3B5'] = 'EE'; backward['2229'] = 'EF'; backward['2261'] = 'F0'; backward['B1'] = 'F1'; backward['2265'] = 'F2'; backward['2264'] = 'F3'; backward['2320'] = 'F4'; backward['2321'] = 'F5'; backward['F7'] = 'F6'; backward['2248'] = 'F7'; backward['B0'] = 'F8'; backward['2219'] = 'F9'; backward['B7'] = 'FA'; backward['221A'] = 'FB'; backward['207F'] = 'FC'; backward['B2'] = 'FD'; backward['25A0'] = 'FE'; backward['A0'] = 'FF'; var hD="0123456789ABCDEF"; this.d2h = function(d) { var h = hD.substr(d&15,1); while(d>15) {d>>=4;h=hD.substr(d&15,1)+h;} return h; } this.h2d = function(h) { return parseInt(h,16); } this.WriteAll = function(what) { //Create Stream object var BinaryStream = WScript.CreateObject("ADODB.Stream"); //Specify stream type - we cheat and get string but 'like' binary BinaryStream.Type = adTypeText; BinaryStream.CharSet = '437'; //Open the stream BinaryStream.Open(); // Write to the stream BinaryStream.WriteText(this.Forward437(what)); // Write the string to the disk BinaryStream.SaveToFile(this.path, adSaveCreateOverWrite); // Clearn up BinaryStream.Close(); } this.ReadAll = function() { //Create Stream object - needs ADO 2.5 or heigher var BinaryStream = WScript.CreateObject("ADODB.Stream") //Specify stream type - we cheat and get string but 'like' binary BinaryStream.Type = adTypeText; BinaryStream.CharSet = codePage; //Open the stream BinaryStream.Open(); //Load the file data from disk To stream object BinaryStream.LoadFromFile(this.path); //Open the stream And get binary 'string' from the object var what = BinaryStream.ReadText; // Clean up BinaryStream.Close(); return this.Backward437(what); } /* Convert a octet number to a code page 437 char code */ this.Forward437 = function(inString) { var encArray = new Array(); var tmp=''; var i=0; var c=0; var l=inString.length; var cc; var h; for(;i1;) { var l=encArray.length; for(var c=0;c1;) { var l=encArray.length; for(var c=0;c小编还为您整理了以下内容,可能对您也有帮助:

Java应用:编写高级JavaScript应用代码[1]

   创建高级对象

  使用构造函数来创建对象

  构造函数是一个函数 调用它来例示并初始化特殊类型的对象 可以使用 new 关键字来调用一个构造函数 下面给出了使用构造函数的新示例

  var myObject = new Object(); // 创建没有属性的通用对象   var myBirthday = new Date( ); // 创建一个 Date 对象   var myCar = new Car(); // 创建一个用户定义的对象 并初始化其属性

  通过构造函数将一个参数作为特定的 this 关键字的值传递给新创建的空对象 然后构造函数负责为新对象执行适应的初始化(创建属性并给出其初始值) 完成后 构造函数返回它所构造的对象的一个参数

  编写构造函数

  可以使用 new 运算符结合像 Object() Date() 和 Function() 这样的预定义的构造函数来创建对象并对其初始化 面向对象的编程其强有力的特征是定义自定义构造函数以创建脚本中使用的自定义对象的能力 创建了自定义的构造函数 这样就可以创建具有已定义属性的对象 下面是自定义函数的示例(注意 this 关键字的使用)

  function Circle (xPoint yPoint radius) {   this x = xPoint; // 圆心的 x 坐标    this y = yPoint; // 圆心的 y 坐标    this r = radius; // 圆的半径   }

  调用 Circle 构造函数时 给出圆心点的值和圆的半径(所有这些元素是完全定义一个独特的圆对象所必需的) 结束时 Circle 对象包含三个属性 下面是如何例示 Circle 对象

  var aCircle = new Circle( );

  使用原型来创建对象

  在编写构造函数时 可以使用原型对象(它本身是所有构造函数的一个属性)的属性来创建继承属性和共享方法 原型属性和方法将按引用复制给类中的每个对象 因此它们都具有相同的值 可以在一个对象中 更改原型属性的值 新的值将覆盖默认值 但仅在该实例中有效 属于这个类的其他对象不受此更改的影响 下面给出了使用自定义构造函数的示例 Circle(注意 this 关键字的使用)

  Circle prototype pi = Math PI;  function ACirclesArea () {   return this pi * this r * this r; // 计算圆面积的公式为 ?r   }  Circle prototype area = ACirclesArea; // 计算圆面积的函数现在是 Circle Prototype 对象的一个方法   var a = ACircle area(); // 此为如何在 Circle 对象上调用面积函数   使用这个原则 可以给预定义的构造函数(都具有原型对象)定义附加属性 例如 如果想要能够删除字符串的前后空格(与 VBScript 的 Trim 函数类似) 就可以给 String 原型对象创建自己的方法   // 增加一个名为 trim 的函数作为  // String 构造函数的原型对象的一个方法   String prototype trim = function()  {   // 用正则表达式将前后空格   // 用空字符串替代    return this replace(/(^s*)|(s*$)/g );  }  // 有空格的字符串  var s = leading and trailing spaces ;  // 显示 leading and trailing spaces ( )   window alert(s + ( + s length + ) );  // 删除前后空格  s = s trim();  // 显示 leading and trailing spaces ( )   window alert(s + ( + s length + ) );

   递归

  递归是一种重要的编程技术 该方法用于让一个函数从其内部调用其自身 一个示例就是计算阶乘 的阶乘被特别地定义为 更大数的阶乘是通过计算 * * 来求得的 每次增加 直至达到要计算其阶乘的那个数

  下面的段落是用文字定义的计算阶乘的一个函数

   如果这个数小于零 则拒绝接收 如果不是一个整数 则将其向下舍入为相邻的整数 如果这个数为 则其阶乘为 如果这个数大于 则将其与相邻较小的数的阶乘相乘

  要计算任何大于 的数的阶乘 至少需要计算一个其他数的阶乘 用来实现这个功能的函数就是已经位于其中的函数 该函数在执行当前的这个数之前 必须调用它本身来计算相邻的较小数的阶乘 这就是一个递归示例

  递归和迭代(循环)是密切相关的 ? 能用递归处理的算法也都可以采用迭代 反之亦然 确定的算法通常可以用几种方法实现 您只需选择最自然贴切的方法 或者您觉得用起来最轻松的一种即可

  显然 这样有可能会出现问题 可以很容易地创建一个递归函数 但该函数不能得到一个确定的结果 并且不能达到一个终点 这样的递归将导致计算机执行一个 无限 循环 下面就是一个示例 在计算阶乘的文字描述中遗漏了第一条规则(对负数的处理) 并试图计算任何负数的阶乘 这将导致失败 因为按顺序计算 的阶乘时 首先不得不计算 的阶乘 然而这样又不得不计算 的阶乘 如此继续 很明显 这样永远也不会到达一个终止点

  因此在设计递归函数时应特别仔细 如果怀疑其中存在着无限递归的可能 则可以让该函数记录它调用自身的次数 如果该函数调用自身的次数太多 即使您已决定了它应调用多少次 就自动退出

  下面仍然是阶乘函数 这次是用 JScript 代码编写的

  // 计算阶乘的函数 如果传递了  // 无效的数值(例如小于零)   // 将返回 表明发生了错误 若数值有效   // 把数值转换为最相近的整数 并  // 返回阶乘   function factorial(aNumber) {   aNumber = Math floor(aNumber); // 如果这个数不是一个整数 则向下舍入    if (aNumber < ) { // 如果这个数小于 拒绝接收     return ;    }    if (aNumber == ) { // 如果为 则其阶乘为     return ;   }   else return (aNumber * factorial(aNumber )); // 否则 递归直至完成   }

   变量范围

  JScript 有两种变量范围 全局和局部 如果在任何函数定义之外声明了一个变量 则该变量为全局变量 且该变量的值在整个持续范围内都可以访问和修改 如果在函数定义内声明了一个变量 则该变量为局部变量 每次执行该函数时都会创建和破坏该变量 且它不能被该函数外的任何事物访问

  像 C++ 这样的语言也有 块范围 在这里 任何一对 {} 都定义新的范围 JScript 不支持块范围

  一个局部变量的名称可以与某个全局变量的名称相同 但这是完全不同和的两个变量 因此 更改一个变量的值不会影响另一个变量的值 在声明局部变量的函数内 只有该局部变量有意义

  var aCentaur = a horse with rider ; // aCentaur 的全局定义   // JScript 代码 为简洁起见有省略   function antiquities() // 在这个函数中声明了一个局部 aCentaur 变量   {   // JScript 代码 为简洁起见有省略    var aCentaur = A centaur is probably a mounted Scythian warrior ;   // JScript 代码 为简洁起见有省略    aCentaur += misreported; that is ; // 添加到局部变量    // JScript 代码 为简洁起见有省略   } // 函数结束   var nothinginparticular = antiquities();  aCentaur += as seen from a distance by a naive innocent ;  /*

  在函数内 该变量的值为 A centaur is probably a mounted Scythian warrior   misreported; that is 在函数外 该变量的值为这句话的其余部分    a horse with rider as seen from a distance by a naive innocent   */

lishixin/Article/program/Java/JSP/201311/20710

优化JavaScript脚本的性能的几个注意事项_基础知识

随着网络的发展,网速和机器速度的提高,越来越多的网站用到了丰富客户端技术。而现在Ajax则是最为流行的一种方式。JavaScript是一种解释型语言,所以能无法达到和C/Java之类的水平,了它能在客户端所做的事情,为了能改进他的性能,我想基于我以前给JavaScript做过的很多测试来谈谈自己的经验,希望能帮助大家改进自己的JavaScript脚本性能。

语言层次方面

循环

循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),while(),for(in)三种循环,事实上,这三种循环中for(in)的效率极差,因为他需要查询散列键,只要可以就应该尽量少用。for(;;)和while循环的性能应该说基本(平时使用时)等价。

而事实上,如何使用这两个循环,则有很大讲究。我在测试中有些很有意思的情况,见附录。最后得出的结论是:

如果是循环变量递增或递减,不要单独对循环变量赋值,应该在它最后一次读取的时候使用嵌套的++或—操作符。

如果要与数组的长度作比较,应该事先把数组的length属性放入一个局部变量中,减少查询次数。

局部变量和全局变量

局部变量的速度要比全局变量的访问速度更快,因为全局变量其实是全局对象的成员,而局部变量是放在函数的栈当中的。

不使用Eval

使用eval相当于在运行时再次调用解释引擎对内容进行运行,需要消耗大量时间。这时候使用JavaScript所支持的闭包可以实现函数模版(关于闭包的内容请参考函数式编程的有关内容)

减少对象查找

因为JavaScript的解释性,所以a.b.c.d.e,需要进行至少4次查询操作,先检查a再检查a中的b,再检查b中的c,如此往下。所以如果这样的表达式重复出现,只要可能,应该尽量少出现这样的表达式,可以利用局部变量,把它放入一个临时的地方进行查询。

这一点可以和循环结合起来,因为我们常常要根据字符串、数组的长度进行循环,而通常这个长度是不变的,比如每次查询a.length,就要额外进行一个操作,而预先把var len=a.length,则就少了一次查询。

字符串连接

如果是追加字符串,最好使用s+=anotherStr操作,而不是要使用s=s+anotherStr。

如果要连接多个字符串,应该少使用+=,如

s+=a;s+=b;s+=c;

应该写成

s+=a + b + c;

而如果是收集字符串,比如多次对同一个字符串进行+=操作的话,最好使用一个缓存。怎么用呢?使用JavaScript数组来收集,最后使用join方法连接起来,如下

var buf = new Array();for(var i = 0; i < 100; i++){ buf.push(i.toString());}var all = buf.join("");

类型转换

类型转换是大家常犯的错误,因为JavaScript是动态类型语言,你不能指定变量的类型。

1. 把数字转换成字符串,应用"" + 1,虽然看起来比较丑一点,但事实上这个效率是最高的,性能上来说:

("" +) > String() > .toString() > new String()

这条其实和下面的“直接量”有点类似,尽量使用编译时就能使用的内部操作要比运行时使用的用户操作要快。

String()属于内部函数,所以速度很快,而.toString()要查询原型中的函数,所以速度逊色一些,new String()用于返回一个精确的副本。

2. 浮点数转换成整型,这个更容易出错,很多人喜欢使用parseInt(),其实parseInt()是用于将字符串转换成数字,而不是浮点数和整型之间的转换,我们应该使用Math.floor()或者Math.round()。

另外,和第二节的对象查找中的问题不一样,Math是内部对象,所以Math.floor()其实并没有多少查询方法和调用的时间,速度是最快的。

3. 对于自定义的对象,如果定义了toString()方法来进行类型转换的话,推荐显式调用toString(),因为内部的操作在尝试所有可能性之后,会尝试对象的toString()方法尝试能否转化为String,所以直接调用这个方法效率会更高

使用直接量

其实这个影响倒比较小,可以忽略。什么叫使用直接量,比如,JavaScript支持使用[param,param,param,...]来直接表达一个数组,以往我们都使用new Array(param,param,...),使用前者是引擎直接解释的,后者要调用一个Array内部构造器,所以要略微快一点点。

同样,var foo = {}的方式也比var foo = new Object();快,var reg = /../;要比var reg=new RegExp()快。

字符串遍历操作

对字符串进行循环操作,譬如替换、查找,应使用正则表达式,因为本身JavaScript的循环速度就比较慢,而正则表达式的操作是用C写成的语言的API,性能很好。

高级对象

自定义高级对象和Date、RegExp对象在构造时都会消耗大量时间。如果可以复用,应采用缓存的方式。

DOM相关

插入HTML

很多人喜欢在JavaScript中使用document.write来给页面生成内容。事实上这样的效率较低,如果需要直接插入HTML,可以找一个容器元素,比如指定一个div或者span,并设置他们的innerHTML来将自己的HTML代码插入到页面中。

对象查询

使用[“”]查询要比.items()更快,这和前面的减少对象查找的思路是一样的,调用.items()增加了一次查询和函数的调用。

创建DOM节点

通常我们可能会使用字符串直接写HTML来创建节点,其实这样做

无法保证代码的有效性

字符串操作效率低

所以应该是用document.createElement()方法,而如果文档中存在现成的样板节点,应该是用cloneNode()方法,因为使用createElement()方法之后,你需要设置多次元素的属性,使用cloneNode()则可以减少属性的设置次数——同样如果需要创建很多元素,应该先准备一个样板节点。

定时器

如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval。setTimeout每次要重新设置一个定时器。

其他

脚本引擎

据我测试Microsoft的JScript的效率较Mozilla的Spidermonkey要差很多,无论是执行速度还是内存管理上,因为JScript现在基本也不更新了。但SpiderMonkey不能使用ActiveXObject

文件优化

文件优化也是一个很有效的手段,删除所有的空格和注释,把代码放入一行内,可以加快下载的速度,注意,是下载的速度而不是解析的速度,如果是本地,注释和空格并不会影响解释和执行速度。

总结

本文总结了我在JavaScript编程中所找到的提高JavaScript运行性能的一些方法,其实这些经验都基于几条原则:

直接拿手头现成的东西比较快,如局部变量比全局变量快,直接量比运行时构造对象快等等。

尽可能少地减少执行次数,比如先缓存需要多次查询的。

尽可能使用语言内置的功能,比如串链接。

尽可能使用系统提供的API,因为这些API是编译好的二进制代码,执行效率很高

同时,一些基本的算法上的优化,同样可以用在JavaScript中,比如运算结构的调整,这里就不再赘述了。但是由于JavaScript是解释型的,一般不会在运行时对字节码进行优化,所以这些优化仍然是很重要的。

当然,其实这里的一些技巧同样使用在其他的一些解释型语言中,大家也可以进行参考。

参考

http://www.umsu.de/jsperf/ 各种浏览器的测试对比

http://home.earthlink.net/~kendrasg/info/js_opt/

附录1

由于是以前做过的测试,测试代码已经不全,我补充了一部分如下:

var print;

if(typeof document != "undefined" ){

print = function(){

document.write(arguments[0]);

}

}else if(typeof WScript != "undefined" ){

print = function(){

WScript.Echo(arguments[0],arguments[1],arguments[2]);

}

}

function empty(){

}

function benchmark(f){

var i = 0;

var start = (new Date()).getTime();

while(i < pressure){

f(i++);

}

var end = (new Date()).getTime();

WScript.Echo(end-start);

}

/*

i=0

start = (new Date()).getTime();

while(i < 60000){

c = [i,i,i,i,i,i,i,i,i,i];

i++;

}

end = (new Date()).getTime();

WScript.Echo(end-start);

i=0

start = (new Date()).getTime();

while(i < 60000){

c = new Array(i,i,i,i,i,i,i,i,i,i);

i++;

}

var end = (new Date()).getTime();

WScript.Echo(end-start);

怎么做脚本?

脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执1行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。举个最常见的例子,当我们点击网页上的E-mail地址时能自动调用Outlook Express或Foxmail这类邮件软件,就是通过脚本功能来实现的。也正因为脚本的这些特点,往往被一些别有用心的人所利用。例如在脚本中加入一些破坏计算机系统的命令,这样当用户浏览网页时,一旦调用这类脚本,便会使用户的系统受到攻击。所以用户应根据对所访问网页的信任程度选择安全等级,特别是对于那些本身内容就非法的网页,更不要轻易允许使用脚本。通过“安全设置”对话框,选择“脚本”选项下的各种设置就可以轻松实现对脚本的禁用和启用。

解释二

动态程序一般有两种实现方式,一是二进制方式,一是脚本方式。

二进制方式是先将我们编写的程序进行编译,变成机器可识别的指令代码(如.exe文件),然后再执行。这种编译好的程序我们只能执行、使用,却看不到他的程序内容。

脚本简单地说就是一条条的文字命令,这些文字命令是我们可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。

按目前的服务规则,虚拟主机网站只能采用脚本语言来实现

动画术语名词解释

脚本:写剧本的人,也叫故事构成。

脚本英文为Script。实际上脚本就是程序,一般都是有应用程序提供的编程语言。应用程序包括浏览器(JavaScript、VBScript)、多媒体创作工具,应用程序的宏和创作系统的批处理语言也可以归入脚本之类。脚本同我们平时使用的VB、C语言的区别主要是:

1、脚本语法比较简单,比较容易掌握;

2、脚本与应用程序密切相关,所以包括相对应用程序自身的功能;

3、脚本一般不具备通用性,所能处理的问题范围有限。

脚本,英文名为Script,简单地说,脚本就是指通过记事本程序或其它文本编辑器(如Windows Script Editor,EditPlus等)创建,并保存为特定扩展名(如.reg , .vbs, .js, .inf等)的文件,对于注册表脚本文件就是利用特定的格式编辑的.reg文件;对于VBScript脚本编程语言来说,脚本文件扩展名就是.vbs;对于JScript脚本编程语言来说,脚本文件扩展名就是.js;另外,.wsf格式是Microsoft定义的一种脚本文件格式,即Window Script File.

具体地说,脚本通过利用应用程序或工具的规则和语法来表达指令,以控制应用程序(包括注册表程序)中各种元素的反应,也可以由简单的控制结构(例如循环语句和If/Then语句)组成,这些应用程序或工具包括网页浏览器(支持VBScript,Jscript),多媒作工具,应用程序的宏(比如Office的宏)以及我们熟悉的注册表工具(regedit.exe)等.操作系统中的批处理也可以归入脚本之列,批处理程序也经常由Windows环境中的"脚本"替换,所以又称脚本是"Windows时代的批处理".

脚本的作用在每一种应用程序中起的作用都是不一样的,比如在网页中可以实现各种动态效果,各种特效处理,实现各种HTML不能实现的功能.而在Office组件中,我们会经常看到"宏"这个工具,它其实就是一系列命令和指令可以实现任务执行的自动化.

启用javascript什么用启用javascript有什么用

启用javascript是什么意思?

1。javascript是网页效果的脚本。如果不启用,有些效果会不可见,比如网页上的轮播、弹出对话框等。华丽的互动效果将是无形的。如果打开,可以正常访问网页。

2.javascript是一种脚本语言,通常在浏览器中执行。手机有打开的选项,说明你的手机浏览器支持,所以能不能打开取决于你浏览的页面是不是在用这种脚本语言。

javascript的具体介绍:

1.如果浏览器不支持Javascript功能或者该功能被禁止,在访问很多网站(包括本网站)时,部分功能无法使用。开启JavaScript功能,达到最佳浏览效果。

2.javascript是一种通常在浏览器中执行的脚本。手机浏览器是支持的,所以能不能打开取决于浏览的页面是否在使用这种脚本语言。因此,如果有任何额外的页面效果,就意味着所浏览的页面支持脚本语言。

3.Javascript是一种文字脚本语言,它是一种动态的、弱的和基于原型的语言,具有内置的支持类型。它的解释器叫做JavaScript引擎,是浏览器的一部分,广泛应用于客户端的脚本语言中。它首先被用在HTML(标准通用标记语言下的一个应用)网页上,给HTML网页添加动态功能。

iPhone手机safari设置里的web检查器什么意思还有javascript什么意思?

javascript那个选项一定要开着,javascript是网站浏览器中的脚本语言,绝大部分网站都使用了javascript。关闭的话,会导致网站上面好多功能无法使用。web检查器是开发人员用的,需要用数据线和电脑连接,才能使用,不会要关心这个。

javascript到底可以干什么的?它的作用是什么?

js可以做的事情有很多,比如以下几点:

用JavaScript可以做很多事情,使网页更具交互性,给站点的用户提供更好,更令人兴奋的体验。

JavaScript使你可以创建活跃的用户界面,当用户在页面间导航时向他们反馈。

使用JavaScript来确保用户以表单形式输入有效的信息,这可以节省你的业务时间和开支。

使用JavaScript,根据用户的操作可以创建定制的HTML页面。

JavaScript还可以处理表单,设置cookie,即时构建HTML页面以及创建基于Web的应用程序。

实际上,JavaScript是一种客户端语言。(实际上,也存有服务器端实现的JavaScript版本)。也就是说,设计它的目的是在用户的机器上执行任务,而不是在服务器上。因此,JavaScript有一些固有的,这些主要出于如下安全原因:

JavaScript不允许读写客户机器上的文件。这是有好处的,因为你肯定不希望网页能够读取自己硬盘上的文件,或者能够将病毒写入硬盘,或者能够操作你的计算机上的文件。唯一例外是,JavaScript可以写到浏览器的cookie文件,但是也有一些。

JavaScript不允许写服务器机器上的文件。尽管写服务器上的文件在许多方面是很方便的(比如存储页面点击数或用户填写表单的数据),但是JavaScript不允许这么做。相反,需要用服务器上的一个程序处理和存储这些数据。这个程序可以是Perl或者PHP等语言编写的CGI运行在服务器上的程序或者Java程序

JavaScript不能关闭不是它自己打开的窗口。这是为了避免一个站点关闭其他任何站点的窗口,从而独占浏览器。

JavaScript不能从来自另一个服务器的已经打开的网页中读取信息。换句话说,网页不能读取已经打开的其它窗口中的信息,因此无法探查访问这个站点冲浪者还在访问其它哪些站点。

如何在谷歌浏览器中启用JavaScript?

启用JavaScriptGoogleChromerr第一步:你需要打开的设置GoogleChrome点击右边的浏览器右上角的菜单图标。选择Settings从选择弹出。r启用JavaScriptGoogleChromerrSettings“Showadvancedsettings?”。它坐落在最底层部分Settings。rr一个更快的方法去那里是按Control+,PCCommand+,Macr启用JavaScriptGoogleChromerr根据“Privacy”,点击“Contentsettings?”。r启用JavaScriptGoogleChromerr当打开对话窗口,寻找并选择"JavaScript"第"AllowallsitestorunJavaScript(recommended)"。r启用JavaScriptGoogleChromerr点击"OK"或"Done"按钮将其关闭,并关闭"Settings"设置。rr点击"Reloadthispage"按钮刷新页面在Web浏览器上。

怎么查看网页打开时调用了哪些js?

1.SCRIPTlanguage=Javascriptsrc="pic.js"type=text/javascript>/SCRIPT>可以放在网页的最后面也可以放在你网页原来的JS的地方2.把JS里的最后一句放到网页里面,代码如下:window.onload=function(){glide.layerGlide(true,'icon_num_top','show_pic_top',205,2,0.1,'top');}这样,SCRIPTlanguage=Javascriptsrc="pic.js"type=text/javascript>/SCRIPT>这段代码,你放在网页的任何地方都可以了

jscriptscript文件怎么打开?

脚本文件,本质是一个文本文件,用能打开文件的软件打开就行,通常用记事本打开.JscriptScriptFile的扩展名是js,主要用在网页脚本方面,网页设计者将脚本代码写在一个文件上,保存为这种类型,然后在网页中链接,这样可以使网页代码比较简洁,容易管理,而且可以做到代码共享.一般js要在网页上才能体现出它的功能.不过它还有一个用处,就是实现windows的自动化管理.它同样是一个脚本文件,不同的是可以用鼠标双击来运行它,一般很少用对话框之类的窗口,因为它无法创建窗口,只能出现对话框.而且运行速度快,一般用户都不知道它已经把事情做完了.所以,看到这一类型的文件,不用直接用鼠标双击,以免遇到恶意代码对你的计算机带来损坏,可以用记事本打开看看里面的内容.

气吉美食网还为您提供以下相关内容希望对您有帮助:

html + javascript + txt 实现输入、存储、读取??

这个样子大概可以了 function jsfso(){ var fso, tf;fso = new ActiveXObject("Scripting.FileSystemObject");tf = fso.CreateTextFile("c:\\testfile.txt", true);tf.WriteLine(document.getElementById('content').i...

怎么做脚本?

动态程序一般有两种实现方式,一是二进制方式,一是脚本方式。二进制方式是先将我们编写的程序进行编译,变成机器可识别的指令代码(如.exe文件),然后再执行。这种编译好的程序我们只能执行、使用,却看不到他的程序内容。脚...

JavaScript代码中var space10=" "怎么理解,引号中变量没被赋值吗...

因为它支持这两个版本的 JavaScript,但是由于两个函数名字相同,浏览器会自动使用第二个函数 f1() 来覆盖掉第一个函数 f1(),因此执行的结果应该是第二个函数 f1() 的执行结果。

优化JavaScript脚本的性能的几个注意事项_基础知识

如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval。setTimeout每次要重新设置一个定时器。 其他脚本引擎 据我测试Microsoft的JScript的效率较Mozilla的Spidermonkey要差很多,无论是执行速度还是内存管理上,因为JScript...

javascript 如何读取本地文本文件(txt)并存入数组!?高手帮忙!

比如www.baidu.com中的js代码就只能访问baidu域名下的文件.如果是用ie在本地打开html文件中的js,把安全性调低一点是可以访问本地文件的。可以用fso读文件,也可以用adodb.stream读文件.还可以用wscript或cscript解释执行js文件...

Java应用:编写高级JavaScript应用代码[1]

下面仍然是阶乘函数 这次是用 JScript 代码编写的 // 计算阶乘的函数 如果传递了// 无效的数值(例如小于零) // 将返回 表明发生了错误 若数值有效 // 把数值转换为最相近的整数 并// 返回阶乘 function factorial(a...

如何编写脚本程序?

先说写文章。DOS中自带一个EDIT命令,可以编辑多个文件和二进制文件,不过功能并不是很强大(比如不能设置字体等),可以使用其它专门的文字处理工具来完成。这些工具中著名的有MS-Word,CCED,WPS等,可在本站“文本”工具中下载。有些人...

jscript中的函数和方法与脚本运行时的函数和方法有什么区别?

接下来在JScript代码中就可以象普通JScript函数一样调用FormatValue()了。用类似的方法也可以实现VBScript代码调用JScript函数。应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript脚本内调用一个不带参数的...

javascript中使用FileSystemObject来读取本地文件。

下面代码是经过调试通过的; function GetLine(){ var fso, f, r;var ForReading = 1, ForWriting = 2;fso = new ActiveXObject("Scripting.FileSystemObject");f = fso.OpenTextFile("f:\\testfile.txt", For...

Java strip脚本是什么

动态程序一般有两种实现方式,一是二进制方式,一是脚本方式。二进制方式是先将我们编写的程序进行编译,变成机器可识别的指令代码(如.exe文件),然后再执行。这种编译好的程序我们只能执行、使用,却看不到他的程序内容。脚...

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

显示全文

相关阅读

热门推荐