本帖最后由 jyswjjgdwtdtj 于 2024-8-26 15:23 编辑
jscript.net是c#,vb.net的同胞兄弟 然而c#没有历史包袱,如今愈发茁壮,vb.net尽管语法似乎不太适配如今的新东西,但依然有着大量的爱好者
jscript.net却被M$彻底遗弃,早早夭折,typescript这个同为js系的弟弟彻底为他添上坟头最后一捧土
说到底,jscript.net从未被当成一项正经的语言 它不支持直接使用win32api操作底层(哪怕对于这项语言的设计者来说在容易不过),甚至不像powershell可以简单的add-type加载c#Dll进assembly 它不支持泛型(哪怕它的标准es4中有)……
js.net的定位非M$声称的在asp.net里做vbs的后继者,因为他比起c#来说一无是处,而似乎更像powershell的脚本语言,然而js强调类型,函数,需要用编译器来”解释“,拔高了门槛。
如今js.net在2010年停止更新,在.net framework中保持静默发布
说来好笑 M$在es4(ie5时代,即jscript,vbs还可以在ie上运行的时候)上表示强烈反对,转头又做出了这么个缝合怪jscript.net——不完全支持es4,还夹带了些私货,把一门彻底的弱类型语言强行向CIL靠拢,实际上在一开始就给他判了死刑
注释的部分为es4支持但jscript.net不支持- import System;
- import System.Windows.Forms;
- import System.Drawing;
- import System.Collections.Generic;
- import System.Collections;
- //import * from System;
- package Jscript_Net_Test{
- class ES1ToES3{
- var a="Windows Script Host||IE-Jscript";
- function A(){
- var name="Jscript";
- var WshVersion=5.6;
- var IE=7;
- var __null__=null;
- var __undefined__=undefined;
- var string=new String('hello');
- WshVersion=parseFloat(WshVersion);
- IE=parseInt(IE);
- MessageBox.Show(('hello'===string).toString());
- MessageBox.Show(('hello'==string).toString());
- var obj={
- array:[
- "a",
- 1,
- new Array(1),
- new Function("return 1"),
- Math.tan,
- new Date(),
- function(){
- return true;
- }
- ]
- };
- var ifunc=(function(){
- var i=0
- return function(){
- return i++;
- }
- }())
- with(Math){
- var t=tan(1);
- }
- }
- }
- class JscripOnly{
- var enumobj=new Enumerator([]);
- }
- class ES4{
- const a="";
- internal const foo = 5;
- //const a=""" I'm "Jscript.Net" """;
- //var b:(Number,String);
- /*function LIKE(param1:like{x:int,y:int},param2:double):String{
- return "";
- }*/
- interface IMyInterface{
- function foo():double;
- }
- /*class Wrapper<T> {
- inner: T
- }*/
- //generic function addItem(x);
- function addItem(x: int) {
- }
- function addItem(x: Number) {
- }
- //const foo = <div class={a}>{"Hello" + a}</div>;
- public function b(){
-
- }
- private function c(){
-
- }
- }
- class Jscript_NetOnly{
- expando class MyExpandoClass {
- &nb
|