3

我正在编写一个小型控制台应用程序,它是一组带有不虔诚参数的批处理文件的智能前端。

我已决定为此使用 JScript.Net,尽管与 C# 相比它可能不合适,因为我发现它的灵活性很有用,而且在这种事情上感觉比 C# 更 RAD。

我遇到的问题是无法在网络上找到足够的资源来展示 JScript.Net != ECMA 的具体情况。我必须时刻警惕这些陷阱,而事情的实际实施方式有点令人费解。

有没有人有关于这个主题的信息的好链接?

编辑 -

具体来说,我想要一个资源来阻止我编写这样的测试——它编译并运行,尽管语法中发生了奇怪的事情:

var int16:Int16=0;
w_(typeof int16);                // =number
//w_(int16.getType());    //runtime error function expected
//
var ds:String="dot,net,class";
w_(typeof ds);                   // =string
var da1:Array=ds.Split(',');  // proper case
var da2:Array=ds.split(',');  // camel case !works too!
w_(typeof da1);                 // =object
var ds1_:String=da1.join(',');// NOT proper. "Join" is **runtime error**
var ds2_:String=da2.join(',');// NOT proper. "Join" is **runtime error**
w_('ds1_:'+ds1_); // prints dot,net,class
w_('ds2_:'+ds2_); // prints dot,net,class
//
var js="jscript.object";
w_(typeof js);                   // =string
var ja1=js.split(','); // camel case
var ja2=js.Split(','); // proper case
w_(typeof ja1);                   // =object
var js1_=ja1.join(',');// camel
var js2_=ja2.join(',');// camel
w_('js1_:'+js1_);  // prints jscript.object
w_('js2_:'+js2_);  // prints jscript.object
//
// and then
//
var dss:System.String="dot,net,sys,class";
w_('dss:'+(typeof ds));                   // =undefined !!!
//w_('dss:'+dss.getType());    //runtime error function expected
var daa:Array=dss.Split(',');// proper case  ???? what is this object type!
var daa2:Array=dss.split(',');// camel case  ???? what is this object type!
w_(daa.join(','));       // prints dot,net,sys,class
w_(daa2.join(','));       // prints dot,net,sys,class
//

你看?

// in library 'package' JLib_Test.jsc
import System;
import System.IO;
import System.Diagnostics;
import System.Text;
import System.Drawing;
package JLib_Test{
  class Test{
    public function Test(){
      //var re=new RegExp('^s$','gi'); // **runtime error** !
    }
  }
//
// in main 'exe' module
var re=new RegExp('^s$','gi'); // no errors
4

2 回答 2

2

当您在 Windows 上时,只需运行您的 .js 文件cscript.exe:这是来自 Microsft 的 Windows 脚本主机 (WSH) 环境,它使用其他 Microsoft 实现(标准 Windows 7 系统目前有 3 个:JScript、JScript.NET 和 JavaScript IE9)。WSH 的 JScript 是在 IE 到 IE8 中使用的一种,因此可能具有较少的 .NET 主义。

请注意,由于 .NET 和 WSH 中的 API 不同,您的 I/O 和参数解析可能会遇到问题,因此我建议制作一个通用的 API 包装器。

于 2012-01-14T14:47:20.203 回答
-1

你的意思是 ECMAScript 吗?ECMAScript 是一种标准脚本语言,由 ECMA 标准化,JScript.Net 是由 Microsoft 创建的 EMCAScript(实际上是基于 JScript)的“实现”,用于 .Net 平台。这意味着 JScript.Net 支持所有 ECMAScript 规范: http: //msdn.microsoft.com/en-us/library/49zhkzs5 (v=vs.71).aspx

并且还为用户提供了一些额外的非 ECMA 功能: http: //msdn.microsoft.com/en-us/library/894hfyb4 (v=vs.71).aspx

于 2012-01-14T10:09:23.663 回答