血涂片检查什么病| 四肢厥逆是什么意思| 青春永驻是什么意思| 真狗是什么意思| 泽什么意思| 梅花三弄是什么意思| 长相厮守是什么意思| 本座是什么意思| 十一月底是什么星座| 喝椰子水有什么好处| 肾炎康复片主要是治疗什么| 外阴白斑有什么症状| 什么动物最厉害| 张仲景的著作是什么| 一九四九年属什么生肖| 凝胶是什么东西| 口腔溃疡是什么原因| 93什么意思| 吃什么可以提高代谢| 含漱是什么意思| 大便是黑色的是什么原因| 螃蟹代表什么生肖| 葡萄糖什么意思| msms筛查是什么意思| 子衿是什么意思| 小白鼠是什么意思| 见血封喉什么意思| 什么汤有营养| 什么茶降糖效果最好| camper是什么牌子| 张国立的老婆叫什么名字| pp材质是什么| 高血压看什么科| 头晕恶心呕吐是什么原因| 小野猫是什么意思| 卧蚕是什么| 心脏不舒服吃什么药| 熬夜有什么坏处| 苡字取名寓意是什么| 宛字五行属什么| 上午九点多是什么时辰| 阴虱长什么样| 全套半套什么意思| 栋字五行属什么| 退役是什么意思| 脚为什么会臭| 阑尾粪石是什么| 黄体酮不足吃什么| 蛔虫属于什么动物| 疫苗是什么| 小孩做ct对身体有什么影响| 骨是什么结构| 急性扁桃体化脓是什么原因引起的| 性取向是什么意思| 友谊是什么意思| 血液为什么是红色| 什么是腺肌症| 老妈子是什么意思| 孕中期同房要注意什么| 白细胞偏低有什么症状| 元参别名叫什么| 驻京办是干什么的| 脑梗前有什么预兆| 蜻蜓点水是什么行为| 阅人无数什么意思| 华西医院院长什么级别| 喝葡萄汁有什么好处| 浮想联翩是什么意思| 卵巢多囊样改变是什么意思| 武汉有什么玩的| 指鹿为马的反义词是什么| 怀疑心梗做什么检查| 质子泵抑制剂是什么药| 佛系是什么意思啊| 鹿的部首是什么| 什么是胆固醇| 扭曲是什么意思| 闹心是什么原因导致的| 滑脉是什么意思| 做b超憋尿要憋到什么程度| 治妇科炎症用什么药好| 吃洋葱对身体有什么好处| 包皮炎用什么药最有效| 四月四号什么星座| 什么品种的芒果最好吃| 落子无悔是什么意思| 口腔溃疡挂什么科室| 黄芪主要治疗什么| sub是什么意思| 诸葛亮号什么| 命途多舛是什么意思| 华语是什么语言| 氰化钾是什么| 尿是红色的是什么原因| 没有奶水怎么办吃什么能下奶| 董事总经理是什么职位| 火烧云是什么意思| 黑吃黑是什么意思| 勇往直前是什么意思| 卡密什么意思| 377是什么| 人为什么要火化| 经常闪腰是什么原因引起的| 宫外孕是什么原因造成的| maxrieny是什么品牌| 吃什么可以补黑色素| 凤鸾是什么意思| 盆腔积液吃什么药| 火龙果吃了有什么好处| 血液净化是什么意思| 不成敬意什么意思| 坐飞机不能带什么东西| 午门是什么意思| 11点半是什么时辰| 手掌心经常出汗是什么原因| 10点是什么时辰| avia是什么牌子| 什么是机械手表| 女人喝胶原蛋白有什么好处| 中性粒细胞偏低是什么原因| 大量出汗是什么原因引起的| 尿电导率低是什么意思| 香波是什么| 懈怠是什么意思| 湿漉漉是什么意思| 强制是什么意思| 三月份什么星座| 甲功能5项检查是查的什么| 什么地睡觉| 自怨自艾是什么意思| 儿童割包皮挂什么科| 近视和远视有什么区别| 一本万利是什么生肖| 李商隐是什么朝代的| 钙片吃多了有什么副作用| 定向招生是什么意思| 幼小衔接班是什么意思| 农历五月初五是什么星座| 十一是什么意思| 多喝柠檬水有什么好处| 隐翅虫咬了用什么药膏| 感冒了不能吃什么食物| 烧仙草是什么东西| 小人难防前一句是什么| 狗吐黄水吃什么药| 全麻后为什么不能睡觉| 宾格是什么意思| 人的心脏在什么位置| 专辑是什么| 老年人心跳过快是什么原因| 手抖是什么病的症状| 拜谒是什么意思| 黄芪是什么| 怀孕吸烟对胎儿有什么影响| 无痛人流后需要注意什么| 茯苓泡水喝有什么功效| 盖世英雄是什么意思| 甲亢多吃什么食物比较好| pussy是什么意思| 翼字五行属什么| 东宫是什么生肖| 梦见老公穿新衣服是什么意思| 肺气虚吃什么中成药| 虾跟什么不能一起吃| 艺五行属什么| 牙齿掉了一小块是什么原因| 痤疮是什么引起的| 万言万当不如一默是什么意思| 生动形象是什么意思| 儿童支气管炎吃什么药| 腿抽筋是什么原因造成的| 咽喉异物感吃什么药| 肥宅是什么意思| 私房照是什么| 冬至吃什么| 张飞穿针的歇后语是什么| 利郎男装是什么档次的| 什么是蚂蚁上树| 吃什么补肾| 向左向右向前看是什么歌| 赞什么不已| 世侄是什么意思| 河南有什么美食| 打饱嗝是什么原因造成的| 大便长期不成形是什么原因| 杨柳代表什么生肖| 什么情况下能吃脑络通| 胰岛素起什么作用| 未羊是什么意思| 黑豚肉是什么肉| 内眼角越揉越痒用什么眼药水| 水痘不能吃什么食物| 饭铲头是什么蛇| 右附件区囊肿是什么意思| 老人尿失禁吃什么药最好| 杜冷丁是什么| 发烧去医院挂什么科| 黑枸杞泡茶是什么颜色| 豆干和什么炒好吃| 胎动频繁到什么程度说明缺氧| 巾帼是指什么| 多才多艺是什么生肖| 为什么一紧张就想拉屎| 为什么晚上睡不着觉| 100元人民币什么时候发行的| 掩耳盗什么| 什么样的大便是正常的| 重度肠上皮化生是什么意思| 5月12号是什么星座| 老公的姐姐叫什么| 减肥晚饭吃什么好| 水痘是由什么引起的| editor是什么意思| 排骨蒸什么好吃| 小便有泡沫是什么情况| 酸梅汤有什么功效| cm代表什么单位| 孩子肚子疼吃什么药| 娃娃鱼吃什么食物| 痔疮便血吃什么药| 八戒是什么意思| at什么意思| 被告不出庭有什么后果| 雪芽是什么茶| 血镁偏高是什么原因| 副鼻窦炎是什么意思| 生孩子需要准备什么东西| 夏天为什么会感冒| 十的偏旁有什么字| bmi是什么| 舌头不舒服挂什么科| 肺纹理增强是什么意思| 圣大保罗属于什么档次| 小本生意做什么好赚钱快| 区间放量是什么意思| 熬夜 吃什么| 天喜星是什么意思| 皮下水肿是什么原因| 田鸡是什么| 龟头炎用什么药膏| 肠胃不好吃什么药好| 肠阻塞有什么症状| 地中海贫血携带者是什么意思| 精索静脉曲张是什么原因导致的| 11.10是什么星座| gy是什么颜色| 未免是什么意思| 暧昧是什么意思| 周杰伦什么星座| 吃什么药可以减肥| 什么叫多重耐药菌| 百香果的籽有什么功效| 眼皮肿什么原因引起的| 肛门疼是什么原因| 2月27号是什么星座| 为什么有的| 蚕蛹吃什么| 尾骨疼是什么原因| 迁单是什么意思| 被银环蛇咬了有什么症状| pro是什么的缩写| 95年属什么的| 供血不足吃什么药| 喝酒前吃什么不容易醉又不伤胃| 百度Jump to content

人工智能产业快速发展 2020年规模将破1600亿

From Wikipedia, the free encyclopedia
JS++
ParadigmMulti-paradigm: Imperative, structured, object-oriented, functional, generic
FamilyECMAScript
Designed byRoger Poon, Anton Rapetov
DeveloperOnux
First appearedOctober 8, 2011; 13 years ago (2025-08-06)
Stable release
0.10.0 / December 10, 2021; 3 years ago (2025-08-06)
Typing disciplineGradual, static, dynamic
Scopelexical
LicenseBSD
Filename extensions.jspp, .js++, .jpp
Websitewww.onux.com/jspp
Influenced by
C, C++, C#, Java, JavaScript
百度 此次德国站公开赛,女乒掌门人李隼没有派出参加世乒赛团体赛的5大主力丁宁、刘诗雯、朱雨玲、陈梦、王曼昱,孙颖莎陈幸同领军的参赛阵容只能算是二线,结果全面溃败。

JS++ is a programming language for web development that extends JavaScript with a sound type system. It includes imperative, object-oriented, functional, and generic programming features. It is free and open-source software released under a BSD license.

History

[edit]

JS++ first appeared on October 8, 2011.[1][2][3] The modern implementation was announced at DeveloperWeek 2016[4] and released on May 31, 2016.[5][6][7][8] The language is designed by Roger Poon and Anton Rapetov.

Features

[edit]

Sound gradual type system

[edit]

Since JS++ is a superset of JavaScript, declaring data types for variables is optional. However, when types are declared, the types are enforced at both compile time and runtime.

Type annotations in JS++ use the traditional C/C++ syntax:

int x = 1;
var y = 2;
bool z = true;

Notably, this differs from TypeScript and ActionScript, which use a more verbose style:

var x : number = 1;
var y : any = 2;
var z : boolean = true;

The type system in JS++ is sound for ECMAScript and DOM API corner cases, including host objects, dynamic key-value pairs, Comet, JScript conditional compilation, dynamic return types, ActiveX, ECMAScript for XML, web browser garbage collector and cyclic reference counting bugs, conditional logic, and other edge and corner cases.[9][10] This differs from other JavaScript supersets where types are optional and discarded at runtime via type erasure, such as in TypeScript.[11][12]

Importing JavaScript libraries

[edit]

JS++ can use JavaScript libraries using the one-line external statement as in the following example from the homepage of JS++:

import System;
// Import JavaScript libraries in one line of code
external jQuery, $;

class Example {
    public Example() {
        // Nearly NO learning curve
        // You can keep writing regular JavaScript
        var a = 0, random = Math.random();
        // Integer types and other primitives
        // ... enable fast (optimized) and clear code
        byte[] rgbColors = [ 0xFF, 0xFA, 0xFF ];
    }

    public void showMessage(int id, string text) {
        // 100% compatible with regular JavaScript
        jQuery("#msgbox").show();
        $("#msgbox").text(id.toString() + text);
    }
}

Object-oriented programming

[edit]

While classes in JavaScript (ECMAScript 6) are syntactic sugar for prototypes under the hood,[13] JS++ classes resemble the classes found in classical programming languages such as C++, Java, and C# in terms of memory layout, performance, and semantics. "Classes" are a static concept, and they cannot be altered at runtime (during program execution) as is the case for JavaScript, Smalltalk, Lisp, and TypeScript, which rely on prototypes.[14] For example, private methods are private at both compile time and runtime, and external JavaScript objects cannot access private JS++ fields or methods—even if a reference to a JS++ object is obtained from JavaScript.

Example: object-oriented sorting

[edit]

The following source code illustrates object-oriented sorting in JS++ using the IComparable<T> interface and Comparison enumeration for type-safe and readable comparisons.[15] The custom sorting logic is one line of code in the overridden compare method below:

import System;
 
class Employee : IComparable<Employee>
{
    private string firstName;
    private string lastName;
 
    public Employee(string firstName, string lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
 
    public override Comparison compare(Employee that) {
        // Sort by employee surname
        return this.lastName.compare(that.lastName);
    }
 
    public override string toString() {
        return this.firstName + " " + this.lastName;
    }
}

Employee zig  = new Employee("Zig", "Ziglar");
Employee john = new Employee("John", "Smith");
Employee abe  = new Employee("Abe", "Lincoln");

Employee[] employees = [ zig, john, abe ];
employees.sort();
Console.log(employees.join(", "));

// Output:
// Abe Lincoln, John Smith, Zig Ziglar

Thus, in the code above, the custom sorting logic provided is:

return this.lastName.compare(that.lastName);

Likewise, to call the sort:

employees.sort();

For printing the sorted results:

Console.log(employees.join(", "));

Example: encapsulation by default

[edit]

JS++ provides encapsulation by default. In the following example, the fields x and y are private by default, even if no access modifier is specified. The methods getX() and getY() are public by default. This enables a more concise class definition syntax, as illustrated in the Point class below:[16]

class Point
{
    int x, y;
 
    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
 
    int getX() { return this.x; }
    int getY() { return this.y; }
}

Out-of-bounds analysis

[edit]

An out-of-bounds access usually occurs with arrays and other containers. For example, when we access the 100th element of a 3-element array, we have an out-of-bounds access:

int[] arr = [ 1, 2, 3 ];
Console.log(arr[100]); // out-of-bounds access, 'arr' does not have an element at index 100

In Java and C#, this can result in an exception and program termination. In C, this can result in buffer overflows or segmentation faults. C++ has varying semantics, such as default initialization, exceptions, segmentation faults, or buffer overflows.[17][18]

JS++ can efficiently analyze and prevent out-of-bounds errors at compile time.[19][20][21]

JavaScript has the notion of null and undefined values, where null means a value is present but it's an empty value, and undefined means there isn't a value there at all. JS++ extends this intuition further to differentiate between empty values and out-of-bounds accesses.[21]

Consider the following code, with a nullable int type represented with int?:

int[] a = [ 1, 2 ];
int? value1 = a[2];
if (value1 == null) {
    Console.log("Definitely out of bounds");
}
 
int?[] b = [ 1, null ];
int? value2 = b[2];
if (value2 == null) {
    Console.log("Might be out of bounds, might just be an access of a null element");
}

While nullable types can represent an out-of-bounds access, it falls apart when the array might contain nullable values as illustrated above. Instead, JS++ introduces an additional concept in addition to null values: undefined values. Recall that JS++ extends the JavaScript notion that null means a value is present but is an empty value, while an undefined value means a value does not exist at all. JS++ uses the concept of "a value does not exist at all" to mean an out-of-bounds access has occurred, and this concept is known in JS++ as "existent types."[21]

Therefore, the previous example can be amended. The existent type int+ means "int or out of bounds" and int?+ means "int, null, or out of bounds":

int[] a = [ 1, 2 ];
int? value1 = a[2];
if (value1 == undefined) {
    Console.log("Definitely out of bounds");
}

int?[] b = [ 1, null ];
int?+ value2 = b[2];
if (value2 == undefined) {
    Console.log("Definitely out of bounds");
}

Intuitively, this means existent types cannot be used as the underlying type for array elements. JS++ enforces this at compile time:

int+[] arr = []; // ERROR
[ ERROR ] JSPPE5204: Existent type `int+' cannot be used as the element type for arrays

Instead of following every conditional branch or virtual method call path, which would result in path explosion and exponential compile times, existent types have essentially the same compile-time analysis cost as int, bool, and other primitive types. Consequently, compile times have been shown to be unaffected (±1-2ms) by the introduction of existent types.[21] Since existent types are used for all array and container types in JS++ (such as hash maps, Stack<T>, and Queue<T>), JS++ containers are thus guaranteed to not have out-of-bounds errors.

In JS++, undefined is a value that cannot be changed. In JavaScript (ECMAScript 3), undefined is a mutable property of the global object, resulting in circumstances where "undefined" can be "defined."[22] Thus, existent types would not have been possible in pure JavaScript, as arrays can contain elements with the undefined value, undefined can be defined, or other edge and corner cases that are prevented in JS++.[21][23]

Also, in comparison to Java and early object-oriented languages such as Eiffel,[24][25] JS++ does not default initialize objects to null.[21] Instead, the compiler enforces initialization by the programmer:

class Car {}

Car car;
[  ERROR  ] JSPPE6000: Variable `car' is not initialized at line 3 char 4

Therefore, since existent types are deeply embedded into the language, JS++ can guarantee that out-of-bounds errors never occur.[26][10]

Databases

[edit]

The concept of existent types can be extended outside of containers. For example, in MySQL, columns can be nullable.[27][28] If the row does not exist for a specified condition (e.g. WHERE clause), the undefined value can be returned. However, if the row does exist but the value at the column is empty, a null value can be returned instead. This can simplify the code and interfaces to the data access layer.

Integer types

[edit]

JS++ provides 8-bit, 16-bit, 32-bit, and 64-bit integer types as well as floating point types:

byte b1 = 0xFF;        // unsigned 8-bit
signed byte b2 = -1;   // signed 8-bit
short s1 = 1;          // signed 16-bit
unsigned short s2 = 1; // unsigned 16-bit
int x1 = 0;            // signed 32-bit
unsigned int x2 = 0;   // unsigned 32-bit
long z1 = 1;           // signed 64-bit
unsigned long z2 = 1;  // unsigned 64-bit

float f = 0.5;         // single-precision floating point
double d = 0.5;        // double-precision floating point

From the project homepage:

// You're not required to declare the type for a variable and you can just
// keep writing regular JavaScript (again, NO learning curve):
var offset = 0;

// But, if you do, this next variable will always remain an 'unsigned int' - even at runtime.
// You'll never see NaN ("Not a Number") runtime errors again.
// This variable is 'unsigned' so it's also guaranteed to never be negative.
unsigned int pageHeight = $(document).height();

Block scoping

[edit]

All variables in JS++ are block-scoped, including the JavaScript var statement.[29][30][31] Thus, there is no need for two different variable declaration keywords with different scoping rules, such as var and let co-existing simultaneously in JavaScript (ECMAScript 6).

Development tools

[edit]

Compiler

[edit]

The JS++ compiler is available for Windows, macOS, and Linux. It is a source-to-source compiler which emits JavaScript source code as an intermediate representation.

The compiler is developed with C/C++, and the developers claim there are "fewer than 10 open bug reports in the core compiler" after 3.5 years of engineering and 400,000 lines of code.[31][32]

Editor integration

[edit]

JS++ integrates with various code editors including Visual Studio Code, Atom, and Sublime Text.[33][34][35]

Build tools

[edit]

JS++ can be integrated with third-party build tools like Webpack.[36]

Release history

[edit]
Version number Release date Changes
0.01 8 October 2011 (2025-08-06) Alpha version, initial release
0.011 10 October 2011 (2025-08-06) Alpha version
0.012 25 October 2011 (2025-08-06) Alpha version
0.013 29 January 2012 (2025-08-06) Alpha version
0.014.1 15 August 2012 (2025-08-06) Alpha version
0.4.1 31 May 2016 (2025-08-06) Beta version, array and callback types, character literals, integral suffixes, removed ECMAScript ASI
0.4.2 18 October 2016 (2025-08-06) Modules, function overloading, dead code elimination, editor integrations
0.4.2.1 24 October 2016 (2025-08-06) Bug fixes
0.4.2.2 17 November 2016 (2025-08-06) Source map debugging
0.4.2.4 25 December 2016 (2025-08-06) Support for Mac OS X, C-style casts, callback and array conversions
0.5.0 13 March 2017 (2025-08-06) Classes
0.5.1 26 March 2017 (2025-08-06) 'foreach' loops
0.5.2 27 July 2017 (2025-08-06) BSD License, Interfaces, Abstract Classes, Virtual Methods, Auto-boxing
0.7.0 27 October 2017 (2025-08-06) All ECMAScript 3 features via Array<T> and Standard Library
0.8.0 15 March 2018 (2025-08-06) Generic programming, Dictionary<T>, multi-line strings, .js++ file extension
0.8.1 27 March 2018 (2025-08-06) auto, catch-all clauses, standard library modules for handling time, bug fixes
0.8.4 23 May 2018 (2025-08-06) New string functions, advanced generics, bug fixes, standard library expansion
0.8.5 2 June 2018 (2025-08-06) Bug fixes
0.8.10 24 November 2018 (2025-08-06) Faster compile times, stacks, queues, Unicode, Base64, generic default constraint rules
0.9.0 11 January 2019 (2025-08-06) Efficient compile time out-of-bounds error analysis
0.9.1 1 July 2019 (2025-08-06) Bug fixes
0.9.2 18 October 2019 (2025-08-06) Final (immutable) variables and default to 64-bit for macOS Catalina

See also

[edit]

References

[edit]
  1. ^ "JavaScript++: New, Powerful Language for Better Web Development". 17 October 2011. Archived from the original on 17 October 2011.
  2. ^ "C++ et Javascript = Javascript++". La ferme du web. 12 October 2011. Archived from the original on 12 October 2011.
  3. ^ "Index of /downloads". 18 October 2011. Archived from the original on 18 October 2011.
  4. ^ "JavaScript Conference - DeveloperWeek 2016 - February 12–18". 13 February 2016. Archived from the original on 13 February 2016.
  5. ^ Poon, Roger (May 31, 2016). "JS++ Goes Into Public Beta". Onux.com.
  6. ^ Handy, Alex (June 1, 2016). "Onux seeks to fix JavaScript's lack of type safety". SD Times.
  7. ^ Krill, Paul (June 6, 2016). "New compiler tackles JavaScript's weak typing". InfoWorld.
  8. ^ Cimpanu, Catalin (June 9, 2016). "jQuery 3.0 Released and Other JavaScript News". Softpedia.
  9. ^ "The JS++ Type System, Appendix B: Problems (Why was this hard to solve?)". Retrieved 10 February 2020.
  10. ^ a b US patent 10296313, Roger Poon, "Safely consuming dynamically-typed code from a statically-typed programming language", published 2025-08-06 
  11. ^ Bridgwater, Adrian (June 13, 2016). "Onux JS++, an answer to JavaScript 'brittle' type safety?". Computer Weekly. Archived from the original on 2025-08-06.
  12. ^ "The JS++ Type System". Onux.com.
  13. ^ "Classes". MDN Web Docs. Retrieved 2025-08-06.
  14. ^ Meyer, Bertrand (1988). Object-Oriented Software Construction. pp. 94, 100.
  15. ^ Poon, Roger (May 28, 2019). "Tips & Tricks: Object-oriented Sorting in JS++ with IComparable<T>". Retrieved June 20, 2025.
  16. ^ Poon, Roger (June 10, 2018). "Tips & Tricks: Only Fields are 'private' by Default". Retrieved June 20, 2025.
  17. ^ "std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::operator[] - cppreference.com". en.cppreference.com. Retrieved June 20, 2025.
  18. ^ "std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::at - cppreference.com". en.cppreference.com. Retrieved June 20, 2025.
  19. ^ Díaz, Fabio (January 23, 2019). "JS++, the JavaScript superset, is getting rid of out-of-bounds errors". Akuaroworld. Archived from the original on February 1, 2019. Retrieved February 1, 2019.
  20. ^ Cardoza, Christina (January 16, 2019). "JS++ programming language looks to solve out-of-bounds errors". SD Times.
  21. ^ a b c d e f Poon, Roger (January 11, 2019). "JS++ 0.9.0: Efficient Compile Time Analysis of Out-of-Bounds Errors". Onux.com.
  22. ^ "ECMAScript Language Specification" (Document). Ecma International. March 24, 2000. p. 86.
  23. ^ "Compatibility with JavaScript - JS++ & JavaScript Documentation". Retrieved June 20, 2025.
  24. ^ Meyer, Bertrand (1988). Object-Oriented Software Construction. pp. 70–77.
  25. ^ "Void-safety: Background, definition, and tools". Eiffel. Retrieved June 24, 2025.
  26. ^ US patent 11023214, Roger Poon & Anton Rapetov, "Preventing runtime out-of-bounds errors and exceptions with nominal types", published 2025-08-06 
  27. ^ "MySQL :: MySQL 8.4 Reference Manual :: 13.6 Data Type Default Values". MySQL. Retrieved June 20, 2025.
  28. ^ "MySQL :: MySQL 8.4 Reference Manual :: 5.3.4.6 Working with NULL Values". MySQL. Retrieved June 20, 2025.
  29. ^ "Scoping - JS++ & JavaScript Documentation". Retrieved June 24, 2025.
  30. ^ "Compatibility with JavaScript - JS++ & JavaScript Documentation". Retrieved June 24, 2025.
  31. ^ a b "JS++ 0.9.1: Bug Fixes".
  32. ^ Poon, Roger (October 9, 2019). "Compiler Software Engineering Methods". Retrieved June 24, 2025.
  33. ^ "JavaScript superset JS++ adds dead code elimination and more". Computerworld. October 19, 2016.
  34. ^ Cardoza, Christina (October 19, 2016). "JS++ 0.4.2 released with code editor integrations, modules and dead code elimination". SD Times.
  35. ^ Clark, Geneva (October 20, 2016). "JS++ 0.4.2 Release - Upgraded With Modular Design, Dead Code Elimination, and Multiple Code Editors". Zeomag.
  36. ^ Phoenix, Ingwie (7 December 2018). "Proof of Concept: Using JS++ with WebPack". GitHub. Ingwie Phoenix.
儿童结膜炎用什么眼药水 什么叫肿瘤 男人小腿肿是什么原因 晚上睡不着白天睡不醒是什么原因 na医学上是什么意思
鱼油是什么鱼提炼的 发烧喝什么饮料比较好 fans是什么意思 十月二十三号是什么星座 以什么见什么
西瓜可以做什么饮料 双子座和什么座最配 25度天气穿什么衣服 土字旁的字与什么有关 吞咽困难是什么感觉
四月18号是什么星座的 新型冠状病毒有什么症状 头发染什么颜色显皮肤白显年轻 做什么饭简单又好吃 什么竹笋不能吃
avia是什么牌子hcv9jop2ns0r.cn 血压正常心跳快是什么原因hcv9jop6ns3r.cn 海鲜不能和什么食物一起吃hcv7jop9ns0r.cn 烊什么意思hcv9jop2ns3r.cn 一去不返是什么生肖hcv8jop9ns6r.cn
6月20号什么星座hcv8jop8ns1r.cn 脾虚湿热吃什么中成药hcv7jop9ns7r.cn 狼吞虎咽是什么生肖hcv9jop1ns9r.cn 下身有异味用什么药hcv9jop3ns9r.cn 血糖高是什么原因引起的hcv9jop5ns4r.cn
万马奔腾是什么生肖hcv8jop8ns6r.cn 什么鼻子好看hcv9jop1ns7r.cn 生吃胡萝卜有什么好处和坏处hcv9jop3ns8r.cn 小便白细胞高是什么原因hcv8jop6ns4r.cn 手表五行属什么hcv9jop6ns7r.cn
圣诞节送什么好hcv9jop4ns6r.cn 什么是业力chuanglingweilai.com 请什么自什么hcv9jop6ns3r.cn 女人银屑病一般都长什么地方hcv7jop7ns0r.cn 宫颈炎用什么药hcv8jop0ns2r.cn
百度