-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjs.html
1597 lines (1525 loc) · 336 KB
/
js.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html class="client-nojs" lang="en" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>JavaScript - Wikipedia</title>
<script>document.documentElement.className="client-js";RLCONF={"wgBreakFrames":!1,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"48810896-a383-443f-bdab-8b645beecf1d","wgCSPNonce":!1,"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":!1,"wgNamespaceNumber":0,"wgPageName":"JavaScript","wgTitle":"JavaScript","wgCurRevisionId":1014012714,"wgRevisionId":1014012714,"wgArticleId":9845,"wgIsArticle":!0,"wgIsRedirect":!1,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 errors: missing periodical","Webarchive template wayback links","Wikipedia pending changes protected pages","Articles with short description","Short description is different from Wikidata","All articles with failed verification","Articles with failed verification from March 2017",
"Pages using Sister project links with wikidata namespace mismatch","Pages using Sister project links with hidden wikidata","Pages using Sister project links with default search","Articles with hAudio microformats","Spoken articles","Articles with Curlie links","Wikipedia articles with BNE identifiers","Wikipedia articles with BNF identifiers","Wikipedia articles with GND identifiers","Wikipedia articles with LCCN identifiers","Wikipedia articles with MA identifiers","Wikipedia articles with NKC identifiers","Wikipedia articles with SUDOC identifiers","Articles with example JavaScript code","JavaScript","American inventions","Cross-platform software","Dynamically typed programming languages","Functional languages","Object-based programming languages","High-level programming languages","Programming languages created in 1995","Programming languages with an ISO standard","Prototype-based programming languages","Scripting languages","Web programming"],"wgPageContentLanguage":"en",
"wgPageContentModel":"wikitext","wgRelevantPageName":"JavaScript","wgRelevantArticleId":9845,"wgIsProbablyEditable":!0,"wgRelevantPageIsProbablyEditable":!0,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgStableRevisionId":1014012714,"wgMediaViewerOnClick":!0,"wgMediaViewerEnabledByDefault":!0,"wgPopupsReferencePreviews":!1,"wgPopupsReferencePreviewsBeta":!0,"wgPopupsConflictsWithNavPopupGadget":!1,"wgPopupsConflictsWithRefTooltipsGadget":!0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":!0,"nearby":!0,"watchlist":!0,"tagline":!1},"wgWMESchemaEditAttemptStepOversample":!1,"wgULSCurrentAutonym":"English","wgNoticeProject":"wikipedia","wgCentralAuthMobileDomain":!1,"wgEditSubmitButtonLabelPublish":!0,"wgULSPosition":"interlanguage","wgWikibaseItemId":"Q2005"};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","noscript":"ready","user.styles":
"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.flaggedRevs.icons":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready","ext.cite.styles":"ready","ext.pygments":"ready","ext.tmh.thumbnail.styles":"ready","skins.vector.styles.legacy":"ready","jquery.makeCollapsible.styles":"ready","ext.flaggedRevs.basic":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","ext.wikimediaBadges":"ready","wikibase.client.init":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","mw.MediaWikiPlayer.loader","mw.PopUpMediaTransform","mw.TMHGalleryHook.js","ext.scribunto.logs","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.legacy.js","ext.flaggedRevs.advanced","ext.gadget.ReferenceTooltips","ext.gadget.charinsert","ext.gadget.extra-toolbar-buttons","ext.gadget.refToolbar","ext.gadget.switcher",
"ext.centralauth.centralautologin","mmv.head","mmv.bootstrap.autostart","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.centralNotice.geoIP","ext.centralNotice.startUp"];</script>
<script>(RLQ=window.RLQ||[]).push(function(){mw.loader.implement("user.options@1hzgi",function($,jQuery,require,module){/*@nomin*/mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});
});});</script>
<link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.flaggedRevs.basic%2Cicons%7Cext.pygments%2CwikimediaBadges%7Cext.tmh.thumbnail.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cjquery.makeCollapsible.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.indicators%7Cskins.vector.styles.legacy%7Cwikibase.client.init&only=styles&skin=vector"/>
<script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector"></script>
<meta name="ResourceLoaderDynamicStyles" content=""/>
<link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector"/>
<meta name="generator" content="MediaWiki 1.36.0-wmf.35"/>
<meta name="referrer" content="origin"/>
<meta name="referrer" content="origin-when-crossorigin"/>
<meta name="referrer" content="origin-when-cross-origin"/>
<meta property="og:title" content="JavaScript - Wikipedia"/>
<meta property="og:type" content="website"/>
<link rel="preconnect" href="//upload.wikimedia.org"/>
<link rel="alternate" media="only screen and (max-width: 720px)" href="//en.m.wikipedia.org/wiki/JavaScript"/>
<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=JavaScript&action=edit"/>
<link rel="edit" title="Edit this page" href="/w/index.php?title=JavaScript&action=edit"/>
<link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"/>
<link rel="shortcut icon" href="/static/favicon/wikipedia.ico"/>
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipedia (en)"/>
<link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"/>
<link rel="license" href="//creativecommons.org/licenses/by-sa/3.0/"/>
<link rel="canonical" href="https://en.wikipedia.org/wiki/JavaScript"/>
<link rel="dns-prefetch" href="//login.wikimedia.org"/>
<link rel="dns-prefetch" href="//meta.wikimedia.org" />
</head>
<body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-JavaScript rootpage-JavaScript skin-vector action-view skin-vector-legacy"><div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body" role="main">
<a id="top"></a>
<div id="siteNotice" class="mw-body-content"><!-- CentralNotice --></div>
<div class="mw-indicators mw-body-content">
<div id="mw-indicator-pp-autoreview" class="mw-indicator"><a href="/wiki/Wikipedia:Protection_policy#pending" title="All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users"><img alt="Page protected with pending changes" src="//upload.wikimedia.org/wikipedia/en/thumb/b/b7/Pending-protection-shackle.svg/20px-Pending-protection-shackle.svg.png" decoding="async" width="20" height="20" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/b7/Pending-protection-shackle.svg/30px-Pending-protection-shackle.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/b7/Pending-protection-shackle.svg/40px-Pending-protection-shackle.svg.png 2x" data-file-width="512" data-file-height="512" /></a></div>
<div id="mw-indicator-spoken-icon" class="mw-indicator"><a href="/wiki/File:En-JavaScript.ogg" title="Listen to this article"><img alt="Listen to this article" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Sound-icon.svg/20px-Sound-icon.svg.png" decoding="async" width="20" height="15" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Sound-icon.svg/30px-Sound-icon.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/47/Sound-icon.svg/40px-Sound-icon.svg.png 2x" data-file-width="128" data-file-height="96" /></a></div>
</div>
<h1 id="firstHeading" class="firstHeading" >JavaScript</h1>
<div id="bodyContent" class="mw-body-content">
<div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div>
<div id="contentSub"><div id="mw-fr-revisiontag" class="flaggedrevs_short flaggedrevs_stable_synced plainlinks noprint"><div class="flaggedrevs_short_basic"><span aria-disabled='false' title='Changes must be reviewed before being displayed on this page.' class='flaggedrevs-icon oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-articleSearch oo-ui-iconElement oo-ui-labelElement-invisible oo-ui-iconWidget'></span><span id='mw-fr-revisiontoggle' aria-disabled='false' title='show/hide details' class='fr-toggle-arrow oo-ui-widget oo-ui-widget-enabled oo-ui-indicatorElement-indicator oo-ui-indicator-down oo-ui-indicatorElement oo-ui-labelElement-invisible oo-ui-indicatorWidget'></span></div>
<div id="mw-fr-revisiondetails-wrapper" style="position:relative;"><div id="mw-fr-revisiondetails" class="flaggedrevs_short_details" style="display:none">This is the <a href="/wiki/Wikipedia:Pending_changes" title="Wikipedia:Pending changes">latest accepted revision</a>, <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Special:Log&type=review&page=JavaScript">reviewed</a> on <i>24 March 2021</i>.</div>
</div>
</div>
</div>
<div id="contentSub2"></div>
<div id="jump-to-nav"></div>
<a class="mw-jump-link" href="#mw-head">Jump to navigation</a>
<a class="mw-jump-link" href="#searchInput">Jump to search</a>
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="mw-parser-output"><div role="note" class="hatnote navigation-not-searchable">Not to be confused with <a href="/wiki/JScript" title="JScript">JScript</a>, <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java (programming language)</a>, or <a href="/wiki/Javanese_script" title="Javanese script">Javanese script</a>.</div>
<div role="note" class="hatnote navigation-not-searchable"><div style="display:inline;" class="plainlinks selfreference noprint">For the uses of JavaScript on Wikipedia, see <a href="/wiki/Wikipedia:JavaScript" class="mw-redirect" title="Wikipedia:JavaScript">Wikipedia:JavaScript</a>.</div></div>
<p class="mw-empty-elt">
</p>
<div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">High-level programming language</div>
<table class="infobox vevent" style="width:22em"><caption class="summary">JavaScript</caption><tbody><tr><th scope="row"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td><a href="/wiki/Event-driven_programming" title="Event-driven programming">event-driven</a>, <a href="/wiki/Functional_programming" title="Functional programming">functional</a>, <a href="/wiki/Imperative_programming" title="Imperative programming">imperative</a></td></tr><tr><th scope="row"><a href="/wiki/Software_design" title="Software design">Designed by</a></th><td><a href="/wiki/Brendan_Eich" title="Brendan Eich">Brendan Eich</a> initially, plus other key contributors to the <a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a> specification</td></tr><tr><th scope="row">First appeared</th><td>December 4, 1995<span class="noprint">; 25 years ago</span><span style="display:none"> (<span class="bday dtstart published updated">1995-12-04</span>)</span><sup id="cite_ref-press_release_1-0" class="reference"><a href="#cite_note-press_release-1">[1]</a></sup></td></tr><tr><td colspan="2" style="text-align:center"></td></tr><tr><th scope="row" style="white-space: nowrap;"><a href="/wiki/Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td><div style="margin:0px;">ECMAScript 2020<sup id="cite_ref-auto_2-0" class="reference"><a href="#cite_note-auto-2">[2]</a></sup>
/ June 2020<span class="noprint">; 9 months ago</span><span style="display:none"> (<span class="bday dtstart published updated">2020-06</span>)</span></div></td></tr><tr><th scope="row" style="white-space: nowrap;"><a href="/wiki/Software_release_life_cycle#BETA" title="Software release life cycle">Preview release</a></th><td><div style="margin:0px;"> ECMAScript 2021
</div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row"><a href="/wiki/Type_system" title="Type system">Typing discipline</a></th><td><a href="/wiki/Dynamic_typing" class="mw-redirect" title="Dynamic typing">Dynamic</a>, <a href="/wiki/Duck_typing" title="Duck typing">duck</a></td></tr><tr><th scope="row"><a href="/wiki/Filename_extension" title="Filename extension">Filename extensions</a></th><td><div class="hlist hlist-separated">
<ul><li><code>.js</code></li>
<li><code>.cjs</code></li>
<li><code>.mjs</code><sup id="cite_ref-node.js_ECMAScript_Modules_Specification_3-0" class="reference"><a href="#cite_note-node.js_ECMAScript_Modules_Specification-3">[3]</a></sup></li></ul>
</div></td></tr><tr><th colspan="2" style="text-align:center;background-color: #eee;">Major <a href="/wiki/Programming_language_implementation" title="Programming language implementation">implementations</a></th></tr><tr><td colspan="2" style="text-align:center"><a href="/wiki/V8_(JavaScript_engine)" title="V8 (JavaScript engine)">V8</a>, <a href="/wiki/JavaScriptCore" class="mw-redirect" title="JavaScriptCore">JavaScriptCore</a>, <a href="/wiki/SpiderMonkey_(JavaScript_engine)" class="mw-redirect" title="SpiderMonkey (JavaScript engine)">SpiderMonkey</a>, <a href="/wiki/Chakra_(JScript_engine)" title="Chakra (JScript engine)">Chakra</a></td></tr><tr><th colspan="2" style="text-align:center;background-color: #eee;">Influenced by</th></tr><tr><td colspan="2" style="text-align:center"><a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>,<sup id="cite_ref-looklikejava_4-0" class="reference"><a href="#cite_note-looklikejava-4">[4]</a></sup><sup id="cite_ref-origin_5-0" class="reference"><a href="#cite_note-origin-5">[5]</a></sup> <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>,<sup id="cite_ref-origin_5-1" class="reference"><a href="#cite_note-origin-5">[5]</a></sup> <a href="/wiki/AWK" title="AWK">AWK</a>,<sup id="cite_ref-6" class="reference"><a href="#cite_note-6">[6]</a></sup> <a href="/wiki/HyperTalk" title="HyperTalk">HyperTalk</a><sup id="cite_ref-7" class="reference"><a href="#cite_note-7">[7]</a></sup></td></tr><tr><th colspan="2" style="text-align:center;background-color: #eee;">Influenced</th></tr><tr><td colspan="2" style="text-align:center"><a href="/wiki/TypeScript" title="TypeScript">TypeScript</a>, <a href="/wiki/CoffeeScript" title="CoffeeScript">CoffeeScript</a>, <a href="/wiki/AssemblyScript" title="AssemblyScript">AssemblyScript</a>, <a href="/wiki/ActionScript" title="ActionScript">ActionScript</a>, <a href="/wiki/Dart_(programming_language)" title="Dart (programming language)">Dart</a>, <a href="/wiki/Objective-J" title="Objective-J">Objective-J</a>, <a href="/wiki/Opa_(programming_language)" title="Opa (programming language)">Opa</a>, <a href="/wiki/Haxe" title="Haxe">Haxe</a></td></tr><tr><td colspan="2" class="hlist" style="text-align:center;border-top: 1px solid #aaa; padding-top: 3px;">
<ul><li><a href="/wiki/File:Wikibooks-logo-en-noslogan.svg" class="image"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/16px-Wikibooks-logo-en-noslogan.svg.png" decoding="async" width="16" height="16" class="noviewer" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/24px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/32px-Wikibooks-logo-en-noslogan.svg.png 2x" data-file-width="400" data-file-height="400" /></a> <a href="https://en.wikibooks.org/wiki/JavaScript" class="extiw" title="wikibooks:JavaScript">JavaScript</a> at Wikibooks</li></ul>
</td></tr></tbody></table>
<style data-mw-deduplicate="TemplateStyles:r1013635363">.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:#f8f9fa;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar a{white-space:nowrap}.mw-parser-output .sidebar-wraplinks a{white-space:normal}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding-bottom:0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em 0}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding-top:0.2em;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding-top:0.4em;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.4em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding-top:0}.mw-parser-output .sidebar-image{padding:0.2em 0 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em}.mw-parser-output .sidebar-content{padding:0 0.1em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.4em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%}.mw-parser-output .sidebar-collapse .sidebar-navbar{padding-top:0.6em}.mw-parser-output .sidebar-list-title{text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{text-align:center;margin:0 3.3em}@media(max-width:720px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}</style><table class="sidebar nomobile" style="width: 12em;"><tbody><tr><td class="sidebar-pretitle" style="background:#f7e018">Part of a <a href="/wiki/Category:JavaScript" title="Category:JavaScript">series</a> on</td></tr><tr><th class="sidebar-title-with-pretitle" style="background:#f7e018"><a class="mw-selflink selflink">JavaScript</a></th></tr><tr><th class="sidebar-heading" style="background:#e4e4f0; display: block; margin-top: 0.5em;">
Language</th></tr><tr><td class="sidebar-content plainlist">
<ul><li><a href="/wiki/JavaScript#History" title="JavaScript">History</a></li>
<li><a href="/wiki/JavaScript#Features" title="JavaScript">Features</a></li>
<li><a href="/wiki/JavaScript_syntax" title="JavaScript syntax">Syntax</a></li>
<li><a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a></li>
<li><a href="/wiki/JavaScript#transpilers" title="JavaScript">Transpilers</a></li></ul></td>
</tr><tr><th class="sidebar-heading" style="background:#e4e4f0; display: block; margin-top: 0.5em;">
Libraries</th></tr><tr><td class="sidebar-content plainlist">
<ul><li><a href="/wiki/List_of_JavaScript_libraries" title="List of JavaScript libraries">JavaScript libraries</a></li>
<li><a href="/wiki/Comparison_of_JavaScript_frameworks" title="Comparison of JavaScript frameworks">Frameworks</a></li>
<li><a href="/wiki/List_of_Ajax_frameworks#JavaScript" title="List of Ajax frameworks">Ajax frameworks</a></li>
<li><a href="/wiki/List_of_unit_testing_frameworks#JavaScript" title="List of unit testing frameworks">Unit testing frameworks</a></li></ul></td>
</tr><tr><th class="sidebar-heading" style="background:#e4e4f0; display: block; margin-top: 0.5em;">
Implementations</th></tr><tr><td class="sidebar-content plainlist">
<ul><li><a href="/wiki/JavaScript_engine" title="JavaScript engine">JavaScript engine</a></li>
<li><a href="/wiki/List_of_server-side_JavaScript_implementations" title="List of server-side JavaScript implementations">Server side</a></li></ul></td>
</tr><tr><th class="sidebar-heading" style="background:#e4e4f0; display: block; margin-top: 0.5em;">
See also</th></tr><tr><td class="sidebar-content plainlist">
<div class="hlist hlist-separated">
<ul><li><a href="/wiki/HTML" title="HTML">HTML</a></li>
<li><a href="/wiki/JSON" title="JSON">JSON</a></li>
<li><a href="/wiki/YAML" title="YAML">YAML</a></li>
<li><a href="/wiki/XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a></li>
<li><a href="/wiki/Asm.js" title="Asm.js">ASM.JS</a></li>
<li><a href="/wiki/JavaScript#WebAssembly" title="JavaScript">WASM</a></li>
<li><a href="/wiki/WebGL" title="WebGL">WebGL</a></li>
<li><a href="/wiki/WebGPU" title="WebGPU">WebGPU</a></li></ul>
</div></td>
</tr><tr><td class="sidebar-navbar"><style data-mw-deduplicate="TemplateStyles:r992953826">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}.mw-parser-output .infobox .navbar{font-size:100%}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:JavaScriptSidebar" title="Template:JavaScriptSidebar"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:JavaScriptSidebar" title="Template talk:JavaScriptSidebar"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Template:JavaScriptSidebar&action=edit"><abbr title="Edit this template">e</abbr></a></li></ul></div></td></tr></tbody></table>
<p><b>JavaScript</b> (<span class="rt-commentedText nowrap"><span class="IPA nopopups noexcerpt"><a href="/wiki/Help:IPA/English" title="Help:IPA/English">/<span style="border-bottom:1px dotted"><span title="/ˈ/: primary stress follows">ˈ</span><span title="/dʒ/: 'j' in 'jam'">dʒ</span><span title="/ɑː/: 'a' in 'father'">ɑː</span><span title="'v' in 'vie'">v</span><span title="/ə/: 'a' in 'about'">ə</span><span title="/ˌ/: secondary stress follows">ˌ</span><span title="'s' in 'sigh'">s</span><span title="'k' in 'kind'">k</span><span title="'r' in 'rye'">r</span><span title="/ɪ/: 'i' in 'kit'">ɪ</span><span title="'p' in 'pie'">p</span><span title="'t' in 'tie'">t</span></span>/</a></span></span>),<sup id="cite_ref-8" class="reference"><a href="#cite_note-8">[8]</a></sup> often abbreviated as <b>JS</b>, is a <a href="/wiki/Programming_language" title="Programming language">programming language</a> that conforms to the <a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a> specification.<sup id="cite_ref-tc39_9-0" class="reference"><a href="#cite_note-tc39-9">[9]</a></sup> JavaScript is <a href="/wiki/High-level_programming_language" title="High-level programming language">high-level</a>, often <a href="/wiki/Just-in-time_compilation" title="Just-in-time compilation">just-in-time compiled</a>, and <a href="/wiki/Programming_paradigm" title="Programming paradigm">multi-paradigm</a>. It has <a href="/wiki/List_of_programming_languages_by_type#Curly-bracket_languages" title="List of programming languages by type">curly-bracket syntax</a>, <a href="/wiki/Dynamic_typing" class="mw-redirect" title="Dynamic typing">dynamic typing</a>, <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototype-based</a> <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-orientation</a>, and <a href="/wiki/First-class_function" title="First-class function">first-class functions</a>.
</p><p>Alongside <a href="/wiki/HTML" title="HTML">HTML</a> and <a href="/wiki/CSS" title="CSS">CSS</a>, JavaScript is one of the core technologies of the <a href="/wiki/World_Wide_Web" title="World Wide Web">World Wide Web</a>.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10">[10]</a></sup> JavaScript enables interactive <a href="/wiki/Web_page" title="Web page">web pages</a> and is an essential part of <a href="/wiki/Web_application" title="Web application">web applications</a>. The vast majority of <a href="/wiki/Website" title="Website">websites</a> use it for <a href="/wiki/Client-side" title="Client-side">client-side</a> page behavior,<sup id="cite_ref-deployedstats_11-0" class="reference"><a href="#cite_note-deployedstats-11">[11]</a></sup> and all major <a href="/wiki/Web_browser" title="Web browser">web browsers</a> have a dedicated <a href="/wiki/JavaScript_engine" title="JavaScript engine">JavaScript engine</a> to execute it.
</p><p>As a multi-paradigm language, JavaScript supports <a href="/wiki/Event-driven_programming" title="Event-driven programming">event-driven</a>, <a href="/wiki/Functional_programming" title="Functional programming">functional</a>, and <a href="/wiki/Imperative_programming" title="Imperative programming">imperative</a> <a href="/wiki/Programming_paradigm" title="Programming paradigm">programming styles</a>. It has <a href="/wiki/Application_programming_interface" class="mw-redirect" title="Application programming interface">application programming interfaces</a> (APIs) for working with text, dates, <a href="/wiki/Regular_expression" title="Regular expression">regular expressions</a>, standard <a href="/wiki/Data_structure" title="Data structure">data structures</a>, and the <a href="/wiki/Document_Object_Model" title="Document Object Model">Document Object Model</a> (DOM).
</p><p>The ECMAScript standard does not include any <a href="/wiki/Input/output" title="Input/output">input/output</a> (I/O), such as <a href="/wiki/Computer_network" title="Computer network">networking</a>, <a href="/wiki/Data_storage" title="Data storage">storage</a>, or <a href="/wiki/Computer_graphics" title="Computer graphics">graphics</a> facilities. In practice, the web browser or other <a href="/wiki/Runtime_system" title="Runtime system">runtime system</a> provides JavaScript APIs for I/O.
</p><p>JavaScript engines were originally used only in web browsers, but they are now core components of other runtime systems, such as <a href="/wiki/Node.js" title="Node.js">Node.js</a> and <a href="/wiki/Deno_(software)" title="Deno (software)">Deno</a>. These systems are used to build <a href="/wiki/Server_(computing)" title="Server (computing)">servers</a> and are also integrated into <a href="/wiki/Software_framework" title="Software framework">frameworks</a>, such as <a href="/wiki/Electron_(software_framework)" title="Electron (software framework)">Electron</a> and <a href="/wiki/Apache_Cordova" title="Apache Cordova">Cordova</a>, for creating a variety of applications.
</p><p>Although there are similarities between JavaScript and <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>, including language name, <a href="/wiki/Syntax_(programming_languages)" title="Syntax (programming languages)">syntax</a>, and respective <a href="/wiki/Standard_library" title="Standard library">standard libraries</a>, the two languages are distinct and differ greatly in design.
</p>
<div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2 id="mw-toc-heading">Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#History"><span class="tocnumber">1</span> <span class="toctext">History</span></a>
<ul>
<li class="toclevel-2 tocsection-2"><a href="#Creation_at_Netscape"><span class="tocnumber">1.1</span> <span class="toctext">Creation at Netscape</span></a></li>
<li class="toclevel-2 tocsection-3"><a href="#Adoption_by_Microsoft"><span class="tocnumber">1.2</span> <span class="toctext">Adoption by Microsoft</span></a></li>
<li class="toclevel-2 tocsection-4"><a href="#The_rise_of_JScript"><span class="tocnumber">1.3</span> <span class="toctext">The rise of JScript</span></a></li>
<li class="toclevel-2 tocsection-5"><a href="#Growth_and_standardization"><span class="tocnumber">1.4</span> <span class="toctext">Growth and standardization</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#Reaching_maturity"><span class="tocnumber">1.5</span> <span class="toctext">Reaching maturity</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-7"><a href="#Trademark"><span class="tocnumber">2</span> <span class="toctext">Trademark</span></a></li>
<li class="toclevel-1 tocsection-8"><a href="#Website_client-side_usage"><span class="tocnumber">3</span> <span class="toctext">Website client-side usage</span></a>
<ul>
<li class="toclevel-2 tocsection-9"><a href="#Examples_of_scripted_behavior"><span class="tocnumber">3.1</span> <span class="toctext">Examples of scripted behavior</span></a></li>
<li class="toclevel-2 tocsection-10"><a href="#Libraries_and_frameworks"><span class="tocnumber">3.2</span> <span class="toctext">Libraries and frameworks</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-11"><a href="#Other_usage"><span class="tocnumber">4</span> <span class="toctext">Other usage</span></a></li>
<li class="toclevel-1 tocsection-12"><a href="#Features"><span class="tocnumber">5</span> <span class="toctext">Features</span></a>
<ul>
<li class="toclevel-2 tocsection-13"><a href="#Imperative_and_structured"><span class="tocnumber">5.1</span> <span class="toctext">Imperative and structured</span></a></li>
<li class="toclevel-2 tocsection-14"><a href="#Weakly_typed"><span class="tocnumber">5.2</span> <span class="toctext">Weakly typed</span></a></li>
<li class="toclevel-2 tocsection-15"><a href="#Dynamic"><span class="tocnumber">5.3</span> <span class="toctext">Dynamic</span></a></li>
<li class="toclevel-2 tocsection-16"><a href="#Object-orientation_(prototype-based)"><span class="tocnumber">5.4</span> <span class="toctext">Object-orientation (prototype-based)</span></a></li>
<li class="toclevel-2 tocsection-17"><a href="#Functional"><span class="tocnumber">5.5</span> <span class="toctext">Functional</span></a></li>
<li class="toclevel-2 tocsection-18"><a href="#Delegative"><span class="tocnumber">5.6</span> <span class="toctext">Delegative</span></a></li>
<li class="toclevel-2 tocsection-19"><a href="#Miscellaneous"><span class="tocnumber">5.7</span> <span class="toctext">Miscellaneous</span></a></li>
<li class="toclevel-2 tocsection-20"><a href="#Vendor-specific_extensions"><span class="tocnumber">5.8</span> <span class="toctext">Vendor-specific extensions</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-21"><a href="#Syntax"><span class="tocnumber">6</span> <span class="toctext">Syntax</span></a>
<ul>
<li class="toclevel-2 tocsection-22"><a href="#Simple_examples"><span class="tocnumber">6.1</span> <span class="toctext">Simple examples</span></a></li>
<li class="toclevel-2 tocsection-23"><a href="#More_advanced_example"><span class="tocnumber">6.2</span> <span class="toctext">More advanced example</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-24"><a href="#Security"><span class="tocnumber">7</span> <span class="toctext">Security</span></a>
<ul>
<li class="toclevel-2 tocsection-25"><a href="#Cross-site_vulnerabilities"><span class="tocnumber">7.1</span> <span class="toctext">Cross-site vulnerabilities</span></a></li>
<li class="toclevel-2 tocsection-26"><a href="#Misplaced_trust_in_the_client"><span class="tocnumber">7.2</span> <span class="toctext">Misplaced trust in the client</span></a></li>
<li class="toclevel-2 tocsection-27"><a href="#Misplaced_trust_in_developers"><span class="tocnumber">7.3</span> <span class="toctext">Misplaced trust in developers</span></a></li>
<li class="toclevel-2 tocsection-28"><a href="#Browser_and_plugin_coding_errors"><span class="tocnumber">7.4</span> <span class="toctext">Browser and plugin coding errors</span></a></li>
<li class="toclevel-2 tocsection-29"><a href="#Sandbox_implementation_errors"><span class="tocnumber">7.5</span> <span class="toctext">Sandbox implementation errors</span></a></li>
<li class="toclevel-2 tocsection-30"><a href="#Hardware_vulnerabilities"><span class="tocnumber">7.6</span> <span class="toctext">Hardware vulnerabilities</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-31"><a href="#Development_tools"><span class="tocnumber">8</span> <span class="toctext">Development tools</span></a></li>
<li class="toclevel-1 tocsection-32"><a href="#Related_technologies"><span class="tocnumber">9</span> <span class="toctext">Related technologies</span></a>
<ul>
<li class="toclevel-2 tocsection-33"><a href="#Java"><span class="tocnumber">9.1</span> <span class="toctext">Java</span></a></li>
<li class="toclevel-2 tocsection-34"><a href="#JSON"><span class="tocnumber">9.2</span> <span class="toctext">JSON</span></a></li>
<li class="toclevel-2 tocsection-35"><a href="#WebAssembly"><span class="tocnumber">9.3</span> <span class="toctext">WebAssembly</span></a></li>
<li class="toclevel-2 tocsection-36"><a href="#Transpilers"><span class="tocnumber">9.4</span> <span class="toctext">Transpilers</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-37"><a href="#References"><span class="tocnumber">10</span> <span class="toctext">References</span></a></li>
<li class="toclevel-1 tocsection-38"><a href="#Further_reading"><span class="tocnumber">11</span> <span class="toctext">Further reading</span></a></li>
<li class="toclevel-1 tocsection-39"><a href="#External_links"><span class="tocnumber">12</span> <span class="toctext">External links</span></a></li>
</ul>
</div>
<h2><span class="mw-headline" id="History">History</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=1" title="Edit section: History">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Creation_at_Netscape">Creation at Netscape</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=2" title="Edit section: Creation at Netscape">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>The <a href="/wiki/Mosaic_(web_browser)" title="Mosaic (web browser)">Mosaic</a> <a href="/wiki/Web_browser" title="Web browser">web browser</a> was released in 1993. As the first browser with a <a href="/wiki/Graphical_user_interface" title="Graphical user interface">graphical user interface</a> accessible to non-technical people, it played a prominent role in the rapid growth of the nascent <a href="/wiki/World_Wide_Web" title="World Wide Web">World Wide Web</a>.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12">[12]</a></sup> The lead developers of Mosaic then founded the <a href="/wiki/Netscape" title="Netscape">Netscape</a> corporation, which released a more polished browser, <a href="/wiki/Netscape_Navigator" title="Netscape Navigator">Netscape Navigator</a>, in 1994. Navigator quickly became the most used browser.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13">[13]</a></sup>
</p><p>During these formative years of the Web, <a href="/wiki/Web_page" title="Web page">web pages</a> could only be static, lacking the capability for dynamic behavior after the page was loaded in the browser. There was a desire in the burgeoning web development scene to remove this limitation, so in 1995, Netscape decided to add a <a href="/wiki/Scripting_language" title="Scripting language">scripting language</a> to Navigator. They pursued two routes to achieve this: collaborating with <a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> to embed the <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a> <a href="/wiki/Programming_language" title="Programming language">programming language</a>, while also hiring <a href="/wiki/Brendan_Eich" title="Brendan Eich">Brendan Eich</a> to embed the <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a> language.<sup id="cite_ref-origin_5-2" class="reference"><a href="#cite_note-origin-5">[5]</a></sup>
</p><p>Netscape management soon decided that the best option was for Eich to devise a new language, with syntax similar to Java and less like Scheme or other extant scripting languages.<sup id="cite_ref-looklikejava_4-1" class="reference"><a href="#cite_note-looklikejava-4">[4]</a></sup><sup id="cite_ref-origin_5-3" class="reference"><a href="#cite_note-origin-5">[5]</a></sup> Although the new language and its <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpreter</a> implementation were officially called LiveScript when first shipped as part of a Navigator release in September 1995, the name was changed to JavaScript three months later.<sup id="cite_ref-origin_5-4" class="reference"><a href="#cite_note-origin-5">[5]</a></sup><sup id="cite_ref-press_release_1-1" class="reference"><a href="#cite_note-press_release-1">[1]</a></sup><sup id="cite_ref-techvision_14-0" class="reference"><a href="#cite_note-techvision-14">[14]</a></sup>
</p><p>The choice of the JavaScript name has caused confusion, sometimes giving the impression that it is a spin-off of Java. Since Java was the hot new programming language at the time, this has been characterized as a marketing ploy by Netscape to give its own new language cachet.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15">[15]</a></sup>
</p>
<h3><span class="mw-headline" id="Adoption_by_Microsoft">Adoption by Microsoft</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=3" title="Edit section: Adoption by Microsoft">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p><a href="/wiki/Microsoft" title="Microsoft">Microsoft</a> debuted <a href="/wiki/Internet_Explorer" title="Internet Explorer">Internet Explorer</a> in 1995, leading to a <a href="/wiki/Browser_war" class="mw-redirect" title="Browser war">browser war</a> with Netscape. On the JavaScript front, Microsoft <a href="/wiki/Reverse_engineering#Reverse_engineering_of_software" title="Reverse engineering">reverse-engineered</a> the Navigator <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpreter</a> to create its own, called <a href="/wiki/JScript" title="JScript">JScript</a>.
</p><p>JScript was first released in 1996, alongside initial support for <a href="/wiki/CSS" title="CSS">CSS</a> and extensions to <a href="/wiki/HTML" title="HTML">HTML</a>. Each of these implementations was noticeably different from their counterparts in Navigator.<sup id="cite_ref-O'Reilly-2001_16-0" class="reference"><a href="#cite_note-O'Reilly-2001-16">[16]</a></sup><sup id="cite_ref-17" class="reference"><a href="#cite_note-17">[17]</a></sup> These differences made it difficult for developers to make their websites work well in both browsers, leading to widespread use of "best viewed in Netscape" and "best viewed in Internet Explorer" logos for several years.<sup id="cite_ref-O'Reilly-2001_16-1" class="reference"><a href="#cite_note-O'Reilly-2001-16">[16]</a></sup><sup id="cite_ref-18" class="reference"><a href="#cite_note-18">[18]</a></sup>
</p>
<h3><span class="mw-headline" id="The_rise_of_JScript">The rise of JScript</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=4" title="Edit section: The rise of JScript">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>In November 1996, <a href="/wiki/Netscape" title="Netscape">Netscape</a> submitted JavaScript to <a href="/wiki/Ecma_International" title="Ecma International">ECMA International</a>, as the starting point for a standard specification that all browser vendors could conform to. This led to the official release of the first <a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a> language specification in June 1997.
</p><p>The standards process continued for a few years, with the release of ECMAScript 2 in June 1998 and ECMAScript 3 in December 1999. Work on ECMAScript 4 began in 2000.
</p><p>Meanwhile, <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a> gained an increasingly dominant position in the browser market. By the early 2000s, Internet Explorer's market share reached 95%.<sup id="cite_ref-searchenginejournal.com_19-0" class="reference"><a href="#cite_note-searchenginejournal.com-19">[19]</a></sup> This meant that <a href="/wiki/JScript" title="JScript">JScript</a> became the de facto standard for <a href="/wiki/Client-side_scripting" class="mw-redirect" title="Client-side scripting">client-side scripting</a> on the Web.
</p><p>Microsoft initially participated in the standards process and implemented some proposals in its JScript language, but eventually it stopped collaborating on ECMA work. Thus ECMAScript 4 was mothballed.
</p>
<h3><span class="mw-headline" id="Growth_and_standardization">Growth and standardization</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=5" title="Edit section: Growth and standardization">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>During the period of <a href="/wiki/Internet_Explorer" title="Internet Explorer">Internet Explorer</a> dominance in the early 2000s, client-side scripting was stagnant. This started to change in 2004, when the successor of Netscape, <a href="/wiki/Mozilla" title="Mozilla">Mozilla</a>, released the <a href="/wiki/Firefox" title="Firefox">Firefox</a> browser. Firefox was well received by many, taking significant market share from Internet Explorer.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20">[20]</a></sup>
</p><p>In 2005, Mozilla joined ECMA International, and work started on the <a href="/wiki/ECMAScript_for_XML" title="ECMAScript for XML">ECMAScript for XML</a> (E4X) standard. This led to Mozilla working jointly with <a href="/wiki/Macromedia" title="Macromedia">Macromedia</a> (later acquired by <a href="/wiki/Adobe_Systems" class="mw-redirect" title="Adobe Systems">Adobe Systems</a>), who were implementing E4X in their ActionScript 3 language, which was based on an ECMAScript 4 draft. The goal became standardizing ActionScript 3 as the new ECMAScript 4. To this end, Adobe Systems released the <a href="/wiki/Tamarin_(software)" title="Tamarin (software)">Tamarin</a> implementation as an <a href="/wiki/Open-source_model" title="Open-source model">open source</a> project. However, Tamarin and ActionScript 3 were too different from established client-side scripting, and without cooperation from <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a>, ECMAScript 4 never reached fruition.
</p><p>Meanwhile, very important developments were occurring in open-source communities not affiliated with ECMA work. In 2005, <a href="/wiki/Jesse_James_Garrett" title="Jesse James Garrett">Jesse James Garrett</a> released a white paper in which he coined the term <a href="/wiki/Ajax_(programming)" title="Ajax (programming)">Ajax</a> and described a set of technologies, of which JavaScript was the backbone, to create <a href="/wiki/Web_application" title="Web application">web applications</a> where data can be loaded in the background, avoiding the need for full page reloads. This sparked a renaissance period of JavaScript, spearheaded by open-source libraries and the communities that formed around them. Many new libraries were created, including <a href="/wiki/JQuery" title="JQuery">jQuery</a>, <a href="/wiki/Prototype_JavaScript_Framework" title="Prototype JavaScript Framework">Prototype</a>, <a href="/wiki/Dojo_Toolkit" title="Dojo Toolkit">Dojo Toolkit</a>, and <a href="/wiki/MooTools" title="MooTools">MooTools</a>.
</p><p><a href="/wiki/Google" title="Google">Google</a> debuted its <a href="/wiki/Google_Chrome" title="Google Chrome">Chrome</a> browser in 2008, with the <a href="/wiki/V8_(JavaScript_engine)" title="V8 (JavaScript engine)">V8</a> JavaScript engine that was faster than its competition.<sup id="cite_ref-21" class="reference"><a href="#cite_note-21">[21]</a></sup><sup id="cite_ref-22" class="reference"><a href="#cite_note-22">[22]</a></sup> The key innovation was <a href="/wiki/Just-in-time_compilation" title="Just-in-time compilation">just-in-time compilation</a> (JIT),<sup id="cite_ref-23" class="reference"><a href="#cite_note-23">[23]</a></sup> so other browser vendors needed to overhaul their engines for JIT.<sup id="cite_ref-24" class="reference"><a href="#cite_note-24">[24]</a></sup>
</p><p>In July 2008, these disparate parties came together for a conference in <a href="/wiki/Oslo" title="Oslo">Oslo</a>. This led to the eventual agreement in early 2009 to combine all relevant work and drive the language forward. The result was the ECMAScript 5 standard, released in December 2009.
</p>
<h3><span class="mw-headline" id="Reaching_maturity">Reaching maturity</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=6" title="Edit section: Reaching maturity">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Ambitious work on the language continued for several years, culminating in an extensive collection of additions and refinements being formalized with the publication of <a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a> 6 in 2015.<sup id="cite_ref-25" class="reference"><a href="#cite_note-25">[25]</a></sup>
</p><p>The draft specification is currently maintained openly on <a href="/wiki/GitHub" title="GitHub">GitHub</a>, and ECMAScript editions are produced via regular annual snapshots.<sup id="cite_ref-branscombe_26-0" class="reference"><a href="#cite_note-branscombe-26">[26]</a></sup> Potential revisions to the language are vetted through a comprehensive proposal process.<sup id="cite_ref-27" class="reference"><a href="#cite_note-27">[27]</a></sup><sup id="cite_ref-28" class="reference"><a href="#cite_note-28">[28]</a></sup> Now, instead of edition numbers, developers check the status of upcoming features individually.<sup id="cite_ref-branscombe_26-1" class="reference"><a href="#cite_note-branscombe-26">[26]</a></sup>
</p><p>The current JavaScript ecosystem has many <a href="/wiki/List_of_JavaScript_libraries" title="List of JavaScript libraries">libraries and frameworks</a>, established programming practices, and increased usage of JavaScript outside of web browsers. Plus, with the rise of <a href="/wiki/Single-page_application" title="Single-page application">single-page applications</a> and other JavaScript-heavy websites, a number of <a href="/wiki/Source-to-source_compiler" title="Source-to-source compiler">transpilers</a> have been created to aid the development process.<sup id="cite_ref-transpilers_29-0" class="reference"><a href="#cite_note-transpilers-29">[29]</a></sup>
</p>
<h2><span class="mw-headline" id="Trademark">Trademark</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=7" title="Edit section: Trademark">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>"JavaScript" is a <a href="/wiki/Trademark" title="Trademark">trademark</a> of <a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a> in the United States.<sup id="cite_ref-30" class="reference"><a href="#cite_note-30">[30]</a></sup> It is used under license for technology invented and implemented by Netscape Communications and other parties.<sup id="cite_ref-31" class="reference"><a href="#cite_note-31">[31]</a></sup>
</p>
<h2><span class="mw-headline" id="Website_client-side_usage">Website client-side usage</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=8" title="Edit section: Website client-side usage">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>JavaScript is the dominant <a href="/wiki/Client-side" title="Client-side">client-side</a> scripting language of the Web, with 97% of <a href="/wiki/Website" title="Website">websites</a> using it for this purpose.<sup id="cite_ref-deployedstats_11-1" class="reference"><a href="#cite_note-deployedstats-11">[11]</a></sup> Scripts are embedded in or included from <a href="/wiki/HTML" title="HTML">HTML</a> documents and interact with the DOM. All major <a href="/wiki/Web_browser" title="Web browser">web browsers</a> have a built-in <a href="/wiki/JavaScript_engine" title="JavaScript engine">JavaScript engine</a> that executes the code on the user's device.
</p>
<h3><span class="mw-headline" id="Examples_of_scripted_behavior">Examples of scripted behavior</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=9" title="Edit section: Examples of scripted behavior">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Dynamic_HTML" title="Dynamic HTML">Dynamic HTML</a> and <a href="/wiki/Ajax_(programming)" title="Ajax (programming)">Ajax (programming)</a></div>
<ul><li>Loading new page content without reloading the page. For example, <a href="/wiki/Social_media" title="Social media">social media</a> websites use Ajax so that users can post new messages without leaving the page.</li>
<li>Animation of page elements, such as fading them in and out, resizing, and moving them.</li>
<li>Interactive content, such as games and video.</li>
<li><a href="/wiki/Data_validation" title="Data validation">Validating</a> input values of a <a href="/wiki/Form_(HTML)" title="Form (HTML)">web form</a> to make sure that they are acceptable before being submitted to the server.</li>
<li>Transmitting information about the user's behavior for <a href="/wiki/Web_analytics" title="Web analytics">analytics</a>, <a href="/wiki/Ad_tracking" title="Ad tracking">ad tracking</a>, and <a href="/wiki/Personalization" title="Personalization">personalization</a>.</li></ul>
<h3><span class="mw-headline" id="Libraries_and_frameworks">Libraries and frameworks</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=10" title="Edit section: Libraries and frameworks">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>The majority of websites use a third-party <a href="/wiki/JavaScript_library" title="JavaScript library">JavaScript library</a> or <a href="/wiki/Web_application_framework" class="mw-redirect" title="Web application framework">web application framework</a> as part of their client-side page scripting.<sup id="cite_ref-lib_usage_32-0" class="reference"><a href="#cite_note-lib_usage-32">[32]</a></sup>
</p><p><a href="/wiki/JQuery" title="JQuery">jQuery</a> is the most popular library, used by over 70% of websites.<sup id="cite_ref-lib_usage_32-1" class="reference"><a href="#cite_note-lib_usage-32">[32]</a></sup>
</p><p>The <a href="/wiki/Angular_(web_framework)" title="Angular (web framework)">Angular</a> framework was created by <a href="/wiki/Google" title="Google">Google</a> for its web services; it is now <a href="/wiki/Open-source_software" title="Open-source software">open source</a> and used by other websites. Likewise, <a href="/wiki/Facebook" title="Facebook">Facebook</a> created the <a href="/wiki/React_(web_framework)" class="mw-redirect" title="React (web framework)">React</a> framework for its website and later released it as open source; other sites, including <a href="/wiki/Twitter" title="Twitter">Twitter</a>, now use it. There are other open source frameworks in use, such as <a href="/wiki/Backbone.js" title="Backbone.js">Backbone.js</a> and <a href="/wiki/Vue.js" title="Vue.js">Vue.js</a>.<sup id="cite_ref-lib_usage_32-2" class="reference"><a href="#cite_note-lib_usage-32">[32]</a></sup>
</p><p>In contrast, the term "Vanilla JS" has been coined for websites not using any libraries or frameworks, instead relying entirely on standard JavaScript functionality.<sup id="cite_ref-33" class="reference"><a href="#cite_note-33">[33]</a></sup>
</p>
<h2><span class="mw-headline" id="Other_usage">Other usage<span class="anchor" id="Server-side_JavaScript"></span><span class="anchor" id="Uses_outside_web_pages"></span></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=11" title="Edit section: Other usage">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>The use of JavaScript has expanded beyond its <a href="/wiki/Web_browser" title="Web browser">web browser</a> roots. <a href="/wiki/JavaScript_engine" title="JavaScript engine">JavaScript engines</a> are now embedded in a variety of other software systems, both for <a href="/wiki/Server-side" title="Server-side">server-side</a> website deployments and non-browser <a href="/wiki/Application_software" title="Application software">applications</a>.
</p><p>Initial attempts at promoting server-side JavaScript usage were <a href="/wiki/Netscape_Enterprise_Server" class="mw-redirect" title="Netscape Enterprise Server">Netscape Enterprise Server</a> and <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a>'s <a href="/wiki/Internet_Information_Services" title="Internet Information Services">Internet Information Services</a>,<sup id="cite_ref-34" class="reference"><a href="#cite_note-34">[34]</a></sup><sup id="cite_ref-35" class="reference"><a href="#cite_note-35">[35]</a></sup> but they were small niches.<sup id="cite_ref-2009server_36-0" class="reference"><a href="#cite_note-2009server-36">[36]</a></sup> Server-side usage eventually started to grow in the late-2000s, with the creation of <a href="/wiki/Node.js" title="Node.js">Node.js</a> and <a href="/wiki/List_of_server-side_JavaScript_implementations" title="List of server-side JavaScript implementations">other approaches</a>.<sup id="cite_ref-2009server_36-1" class="reference"><a href="#cite_note-2009server-36">[36]</a></sup>
</p><p><a href="/wiki/Electron_(software_framework)" title="Electron (software framework)">Electron</a>, <a href="/wiki/Apache_Cordova" title="Apache Cordova">Cordova</a>, and other <a href="/wiki/Software_framework" title="Software framework">software frameworks</a> have been used to create many applications with behavior implemented in JavaScript. Other non-browser applications include <a href="/wiki/Adobe_Acrobat" title="Adobe Acrobat">Adobe Acrobat</a> support for scripting <a href="/wiki/PDF" title="PDF">PDF</a> documents<sup id="cite_ref-37" class="reference"><a href="#cite_note-37">[37]</a></sup> and <a href="/wiki/GNOME_Shell" title="GNOME Shell">GNOME Shell</a> extensions written in JavaScript.<sup id="cite_ref-38" class="reference"><a href="#cite_note-38">[38]</a></sup>
</p><p>JavaScript has recently begun to appear in some <a href="/wiki/Embedded_system" title="Embedded system">embedded systems</a>, usually by leveraging Node.js.<sup id="cite_ref-39" class="reference"><a href="#cite_note-39">[39]</a></sup><sup id="cite_ref-40" class="reference"><a href="#cite_note-40">[40]</a></sup><sup id="cite_ref-41" class="reference"><a href="#cite_note-41">[41]</a></sup>
</p><p><a href="/wiki/React_Native" title="React Native">React Native</a> enables the creation of native <a href="/wiki/Android_(operating_system)" title="Android (operating system)">Android</a> and <a href="/wiki/IOS" title="IOS">iOS</a> mobile apps that use a version of the React framework similar to websites.
</p>
<h2><span class="mw-headline" id="Features">Features</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=12" title="Edit section: Features">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>The following features are common to all conforming ECMAScript implementations, unless explicitly specified otherwise.
</p>
<h3><span class="mw-headline" id="Imperative_and_structured">Imperative and structured</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=13" title="Edit section: Imperative and structured">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>JavaScript supports much of the <a href="/wiki/Structured_programming" title="Structured programming">structured programming</a> syntax from <a href="/wiki/C_(computer_language)" class="mw-redirect" title="C (computer language)">C</a> (e.g., <code>if</code> statements, <code>while</code> loops, <code>switch</code> statements, <code>do while</code> loops, etc.). One partial exception is <a href="/wiki/Scope_(computer_science)" title="Scope (computer science)">scoping</a>: JavaScript originally had only <a href="/wiki/Function_scoping" class="mw-redirect" title="Function scoping">function scoping</a> with <code>var</code>. ECMAScript 2015 added keywords <code>let</code> and <code><a href="/wiki/Const_(computer_programming)" title="Const (computer programming)">const</a></code> for block scoping, meaning JavaScript now has both function and block scoping. Like C, JavaScript makes a distinction between <a href="/wiki/Expression_(computer_science)" title="Expression (computer science)">expressions</a> and <a href="/wiki/Statement_(computer_science)" title="Statement (computer science)">statements</a>. One syntactic difference from C is <a href="/wiki/Defensive_semicolon" class="mw-redirect" title="Defensive semicolon">automatic semicolon insertion</a>, which allows the semicolons that would normally terminate statements to be omitted.<sup id="cite_ref-Flanagan2006_42-0" class="reference"><a href="#cite_note-Flanagan2006-42">[42]</a></sup>
</p>
<h3><span class="mw-headline" id="Weakly_typed">Weakly typed</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=14" title="Edit section: Weakly typed">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>JavaScript is <a href="/wiki/Strong_and_weak_typing" title="Strong and weak typing">weakly typed</a>, which means certain types are implicitly cast depending on the operation used.<sup id="cite_ref-casting_rules_43-0" class="reference"><a href="#cite_note-casting_rules-43">[43]</a></sup>
</p>
<ul><li>The binary <code>+</code> operator casts both operands to a string unless both operands are numbers. This is because the addition operator doubles as a concatenation operator</li>
<li>The binary <code>-</code> operator always casts both operands to a number</li>
<li>Both unary operators (<code>+</code>, <code>-</code>) always cast the operand to a number</li></ul>
<p>Values are cast to strings like the following:<sup id="cite_ref-casting_rules_43-1" class="reference"><a href="#cite_note-casting_rules-43">[43]</a></sup>
</p>
<ul><li>Strings are left as-is</li>
<li>Numbers are converted to their string representation</li>
<li>Arrays have their elements cast to strings after which they are joined by commas (<code>,</code>)</li>
<li>Other objects are converted to the string <code>[object Object]</code> where <code>Object</code> is the name of the constructor of the object</li></ul>
<p>Values are cast to numbers by casting to strings and then casting the strings to numbers. These processes can be modified by defining <code>toString</code> and <code>valueOf</code> functions on the <a href="#Object-orientation_(prototype-based)">prototype</a> for string and number casting respectively.
</p><p>JavaScript has received criticism for the way it implements these conversions as the complexity of the rules can be mistaken for inconsistency.<sup id="cite_ref-44" class="reference"><a href="#cite_note-44">[44]</a></sup><sup id="cite_ref-casting_rules_43-2" class="reference"><a href="#cite_note-casting_rules-43">[43]</a></sup> For example, when adding a number to a string, the number will be cast to a string before performing concatenation, but when subtracting a number from a string, the string is cast to a number before performing subtraction.
</p>
<table class="wikitable">
<caption>JavaScript type conversions
</caption>
<tbody><tr>
<th>left operand
</th>
<th>operator
</th>
<th>right operand
</th>
<th>result
</th></tr>
<tr>
<td><code>[]</code> (empty array)
</td>
<td><code>+</code>
</td>
<td><code>[]</code> (empty array)
</td>
<td><code>""</code> (empty string)
</td></tr>
<tr>
<td><code>[]</code> (empty array)
</td>
<td><code>+</code>
</td>
<td><code>{}</code> (empty object)
</td>
<td><code>"[object Object]"</code> (string)
</td></tr>
<tr>
<td><code>false</code> (boolean)
</td>
<td><code>+</code>
</td>
<td><code>[]</code> (empty array)
</td>
<td><code>"false"</code> (string)
</td></tr>
<tr>
<td><code>"123"</code>(string)
</td>
<td><code>+</code>
</td>
<td><code>1</code> (number)
</td>
<td><code>"1231"</code> (string)
</td></tr>
<tr>
<td><code>"123"</code> (string)
</td>
<td><code>-</code>
</td>
<td><code>1</code> (number)
</td>
<td><code>122</code> (number)
</td></tr></tbody></table>
<p>Often also mentioned is <code>{} + []</code> resulting in <code>0</code> (number). This is misleading: the <code>{}</code> is interpreted as an empty code block instead of an empty object, and the empty array is cast to a number by the remaining unary <code>+</code> operator. If you wrap the expression in parentheses <code>({} + [])</code> the curly brackets are interpreted as an empty object and the result of the expression is <code>"[object Object]"</code> as expected.<sup id="cite_ref-casting_rules_43-3" class="reference"><a href="#cite_note-casting_rules-43">[43]</a></sup>
</p>
<h3><span class="mw-headline" id="Dynamic">Dynamic</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=15" title="Edit section: Dynamic">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<dl><dt>Typing</dt>
<dd>JavaScript is <a href="/wiki/Dynamic_typing" class="mw-redirect" title="Dynamic typing">dynamically typed</a> like most other <a href="/wiki/Scripting_language" title="Scripting language">scripting languages</a>. A <a href="/wiki/Type_system" title="Type system">type</a> is associated with a <a href="/wiki/Value_(computer_science)" title="Value (computer science)">value</a> rather than an expression. For example, a <a href="/wiki/Variable_(programming)" class="mw-redirect" title="Variable (programming)">variable</a> initially bound to a number may be reassigned to a <a href="/wiki/String_(computer_science)" title="String (computer science)">string</a>.<sup id="cite_ref-45" class="reference"><a href="#cite_note-45">[45]</a></sup> JavaScript supports various ways to test the type of objects, including <a href="/wiki/Duck_typing" title="Duck typing">duck typing</a>.<sup id="cite_ref-FOOTNOTEFlanagan2006176–178_46-0" class="reference"><a href="#cite_note-FOOTNOTEFlanagan2006176–178-46">[46]</a></sup></dd>
<dt>Run-time evaluation</dt>
<dd>JavaScript includes an <code><a href="/wiki/Eval" title="Eval">eval</a></code> function that can execute statements provided as strings at run-time.</dd></dl>
<h3><span id="Object-orientation_.28prototype-based.29"></span><span class="mw-headline" id="Object-orientation_(prototype-based)">Object-orientation (prototype-based)</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=16" title="Edit section: Object-orientation (prototype-based)">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Prototypal inheritance in JavaScript is described by <a href="/wiki/Douglas_Crockford" title="Douglas Crockford">Douglas Crockford</a> as:
</p>
<style data-mw-deduplicate="TemplateStyles:r996844942">.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 40px}.mw-parser-output .templatequote .templatequotecite{line-height:1.5em;text-align:left;padding-left:1.6em;margin-top:0}</style><blockquote class="templatequote"><p>You make prototype objects, and then … make new instances. Objects are mutable in JavaScript, so we can augment the new instances, giving them new fields and methods. These can then act as prototypes for even newer objects. We don't need classes to make lots of similar objects… Objects inherit from objects. What could be more object oriented than that?<sup id="cite_ref-47" class="reference"><a href="#cite_note-47">[47]</a></sup>
</p></blockquote>
<p>In JavaScript, an <a href="/wiki/Object_(computer_science)" title="Object (computer science)">object</a> is an <a href="/wiki/Associative_array" title="Associative array">associative array</a>, augmented with a prototype (see below); each key provides the name for an object <a href="/wiki/Property_(programming)" title="Property (programming)">property</a>, and there are two syntactical ways to specify such a name: dot notation (<code>obj.x = 10</code>) and bracket notation (<code>obj['x'] = 10</code>). A property may be added, rebound, or deleted at run-time. Most properties of an object (and any property that belongs to an object's prototype inheritance chain) can be enumerated using a <code>for...in</code> loop.
</p>
<dl><dt>Prototypes</dt>
<dd>JavaScript uses <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototypes</a> where many other object-oriented languages use <a href="/wiki/Class_(computer_science)" class="mw-redirect" title="Class (computer science)">classes</a> for <a href="/wiki/Inheritance_(computer_science)" class="mw-redirect" title="Inheritance (computer science)">inheritance</a>.<sup id="cite_ref-48" class="reference"><a href="#cite_note-48">[48]</a></sup> It is possible to simulate many class-based features with prototypes in JavaScript.<sup id="cite_ref-49" class="reference"><a href="#cite_note-49">[49]</a></sup></dd>
<dt>Functions as object constructors</dt>
<dd>Functions double as object constructors, along with their typical role. Prefixing a function call with <i>new</i> will create an instance of a prototype, inheriting properties and methods from the constructor (including properties from the <code>Object</code> prototype).<sup id="cite_ref-50" class="reference"><a href="#cite_note-50">[50]</a></sup> ECMAScript 5 offers the <code>Object.create</code> method, allowing explicit creation of an instance without automatically inheriting from the <code>Object</code> prototype (older environments can assign the prototype to <code>null</code>).<sup id="cite_ref-51" class="reference"><a href="#cite_note-51">[51]</a></sup> The constructor's <code>prototype</code> property determines the object used for the new object's internal prototype. New methods can be added by modifying the prototype of the function used as a constructor. JavaScript's built-in constructors, such as <code>Array</code> or <code>Object</code>, also have prototypes that can be modified. While it is possible to modify the <code>Object</code> prototype, it is generally considered bad practice because most objects in JavaScript will inherit methods and properties from the <code>Object</code> prototype, and they may not expect the prototype to be modified.<sup id="cite_ref-52" class="reference"><a href="#cite_note-52">[52]</a></sup></dd>
<dt>Functions as methods</dt>
<dd>Unlike many object-oriented languages, there is no distinction between a function definition and a <a href="/wiki/Method_(computer_science)" class="mw-redirect" title="Method (computer science)">method</a> definition. Rather, the distinction occurs during function calling; when a function is called as a method of an object, the function's local <i>this</i> keyword is bound to that object for that invocation.</dd></dl>
<h3><span class="mw-headline" id="Functional">Functional</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=17" title="Edit section: Functional">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>A <a href="/wiki/Subroutine" title="Subroutine">function</a> is <a href="/wiki/First-class_function" title="First-class function">first-class</a>; a function is considered to be an object. As such, a function may have properties and methods, such as <code>.call()</code> and <code>.bind()</code>.<sup id="cite_ref-53" class="reference"><a href="#cite_note-53">[53]</a></sup> A <i>nested</i> function is a function defined within another function. It is created each time the outer function is invoked. In addition, each nested function forms a <a href="/wiki/Closure_(computer_programming)" title="Closure (computer programming)">lexical closure</a>: The <a href="/wiki/Scope_(programming)#Lexical_scoping_vs._dynamic_scoping" class="mw-redirect" title="Scope (programming)">lexical scope</a> of the outer function (including any constant, local variable, or argument value) becomes part of the internal state of each inner function object, even after execution of the outer function concludes.<sup id="cite_ref-FOOTNOTEFlanagan2006141_54-0" class="reference"><a href="#cite_note-FOOTNOTEFlanagan2006141-54">[54]</a></sup> JavaScript also supports <a href="/wiki/Anonymous_function" title="Anonymous function">anonymous functions</a>.
</p>
<h3><span class="mw-headline" id="Delegative">Delegative</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=18" title="Edit section: Delegative">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>JavaScript supports implicit and explicit <a href="/wiki/Delegation_(object-oriented_programming)" title="Delegation (object-oriented programming)">delegation</a>.
</p>
<dl><dt>Functions as roles (Traits and Mixins)</dt>
<dd>JavaScript natively supports various function-based implementations of <a href="/wiki/Role-oriented_programming" title="Role-oriented programming">Role</a><sup id="cite_ref-55" class="reference"><a href="#cite_note-55">[55]</a></sup> patterns like <a href="/wiki/Traits_(computer_science)" class="mw-redirect" title="Traits (computer science)">Traits</a><sup id="cite_ref-56" class="reference"><a href="#cite_note-56">[56]</a></sup><sup id="cite_ref-57" class="reference"><a href="#cite_note-57">[57]</a></sup> and <a href="/wiki/Mixin" title="Mixin">Mixins</a>.<sup id="cite_ref-58" class="reference"><a href="#cite_note-58">[58]</a></sup> Such a function defines additional behavior by at least one method bound to the <code>this</code> keyword within its <code>function</code> body. A Role then has to be delegated explicitly via <code>call</code> or <code>apply</code> to objects that need to feature additional behavior that is not shared via the prototype chain.</dd>
<dt>Object composition and inheritance</dt>
<dd>Whereas explicit function-based delegation does cover <a href="/wiki/Object_composition" title="Object composition">composition</a> in JavaScript, implicit delegation already happens every time the prototype chain is walked in order to, e.g., find a method that might be related to but is not directly owned by an object. Once the method is found it gets called within this object's context. Thus <a href="/wiki/Inheritance_(computer_science)" class="mw-redirect" title="Inheritance (computer science)">inheritance</a> in JavaScript is covered by a delegation automatism that is bound to the prototype property of constructor functions.</dd></dl>
<h3><span class="mw-headline" id="Miscellaneous">Miscellaneous</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=19" title="Edit section: Miscellaneous">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>JS is a <a href="/wiki/Zero-based_numbering" title="Zero-based numbering">zero-index</a> language.
</p>
<dl><dt>Run-time environment</dt>
<dd>JavaScript typically relies on a run-time environment (e.g., a <a href="/wiki/Web_browser" title="Web browser">web browser</a>) to provide objects and methods by which scripts can interact with the environment (e.g., a web page <a href="/wiki/Document_Object_Model" title="Document Object Model">DOM</a>). These environments are single-<a href="/wiki/Thread_(computing)" title="Thread (computing)">threaded</a>. JavaScript also relies on the run-time environment to provide the ability to include/import scripts (e.g., <a href="/wiki/HTML" title="HTML">HTML</a> <code><script></code> elements). This is not a language feature per se, but it is common in most JavaScript implementations. JavaScript processes <a href="/wiki/Message_(computer_science)" class="mw-redirect" title="Message (computer science)">messages</a> from a <a href="/wiki/Queue_(abstract_data_type)" title="Queue (abstract data type)">queue</a> one at a time. JavaScript calls a <a href="/wiki/Subroutine" title="Subroutine">function</a> associated with each new message, creating a <a href="/wiki/Call_stack" title="Call stack">call stack</a> frame with the function's <a href="/wiki/Parameter_(computer_programming)" title="Parameter (computer programming)">arguments</a> and <a href="/wiki/Local_variable" title="Local variable">local variables</a>. The call stack shrinks and grows based on the function's needs. When the call stack is empty upon function completion, JavaScript proceeds to the next message in the queue. This is called the <a href="/wiki/Event_loop" title="Event loop">event loop</a>, described as "run to completion" because each message is fully processed before the next message is considered. However, the language's <a href="/wiki/Concurrency_(computer_science)" title="Concurrency (computer science)">concurrency model</a> describes the event loop as <a href="/wiki/Asynchronous_I/O" title="Asynchronous I/O">non-blocking</a>: program <a href="/wiki/Input/output" title="Input/output">input/output</a> is performed using <a href="/wiki/Event_(computing)" title="Event (computing)">events</a> and <a href="/wiki/Callback_(computer_programming)" title="Callback (computer programming)">callback functions</a>. This means, for instance, that JavaScript can process a mouse click while waiting for a database query to return information.<sup id="cite_ref-59" class="reference"><a href="#cite_note-59">[59]</a></sup></dd></dl>
<dl><dt>Variadic functions</dt>
<dd>An indefinite number of parameters can be passed to a function. The function can access them through <a href="/wiki/Formal_parameter" class="mw-redirect" title="Formal parameter">formal parameters</a> and also through the local <code>arguments</code> object. <a href="/wiki/Variadic_functions" class="mw-redirect" title="Variadic functions">Variadic functions</a> can also be created by using the <code><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind">bind</a></code> method.</dd></dl>
<dl><dt>Array and object literals</dt>
<dd>Like many scripting languages, arrays and objects (<a href="/wiki/Associative_arrays" class="mw-redirect" title="Associative arrays">associative arrays</a> in other languages) can each be created with a succinct shortcut syntax. In fact, these <a href="/wiki/Object_literal" class="mw-redirect" title="Object literal">literals</a> form the basis of the <a href="/wiki/JSON" title="JSON">JSON</a> data format.</dd></dl>
<dl><dt>Regular expressions</dt>
<dd>JavaScript also supports <a href="/wiki/Regular_expression" title="Regular expression">regular expressions</a> in a manner similar to <a href="/wiki/Perl" title="Perl">Perl</a>, which provide a concise and powerful syntax for text manipulation that is more sophisticated than the built-in string functions.<sup id="cite_ref-60" class="reference"><a href="#cite_note-60">[60]</a></sup></dd></dl>
<dl><dt>Promises</dt>
<dd>JavaScript also supports <a href="/wiki/Futures_and_promises" title="Futures and promises">promises</a>, which are a way of handling asynchronous operations. There is a built-in Promise object that gives access to a lot of functionalities for handling promises, and defines how they should be handled. It allows one to associate handlers with an asynchronous action's eventual success value or failure reason. This lets asynchronous methods return values like synchronous methods: instead of immediately returning the final value, the asynchronous method returns a promise to supply the value at some point in the future. Recently, combinator methods were introduced in the JavaScript specification, which allows developers to combine multiple JavaScript promises and do operations on the basis of different scenarios. The methods introduced are: Promise.race, Promise.all, Promise.allSettled and Promise.any.</dd></dl>
<h3><span class="mw-headline" id="Vendor-specific_extensions">Vendor-specific extensions</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=20" title="Edit section: Vendor-specific extensions">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Historically, some <a href="/wiki/JavaScript_engine" title="JavaScript engine">JavaScript engines</a> supported these non-standard features:
</p>
<ul><li>conditional <code>catch</code> clauses (like Java)</li>
<li><a href="/wiki/List_comprehension" title="List comprehension">array comprehensions</a> and generator expressions (like Python)</li>
<li>concise function expressions (<code>function(args) expr</code>; this experimental syntax predated arrow functions)</li>
<li><a href="/wiki/ECMAScript_for_XML" title="ECMAScript for XML">ECMAScript for XML</a> (E4X), an extension that adds native XML support to ECMAScript (unsupported in Firefox since version 21<sup id="cite_ref-61" class="reference"><a href="#cite_note-61">[61]</a></sup>)</li></ul>
<h2><span class="mw-headline" id="Syntax">Syntax</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=21" title="Edit section: Syntax">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/JavaScript_syntax" title="JavaScript syntax">JavaScript syntax</a></div>
<h3><span class="mw-headline" id="Simple_examples">Simple examples</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=22" title="Edit section: Simple examples">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p><a href="/wiki/Variable_(computer_science)" title="Variable (computer science)">Variables</a> in JavaScript can be defined using either the <code>var</code>,<sup id="cite_ref-62" class="reference"><a href="#cite_note-62">[62]</a></sup> <code>let</code><sup id="cite_ref-moz_let_63-0" class="reference"><a href="#cite_note-moz_let-63">[63]</a></sup> or <code>const</code><sup id="cite_ref-moz_const_64-0" class="reference"><a href="#cite_note-moz_const-64">[64]</a></sup> keywords.
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Declares a function-scoped variable named `x`, and implicitly assigns the</span>
<span class="c1">// special value `undefined` to it. Variables without value are automatically</span>
<span class="c1">// set to undefined.</span>
<span class="kd">var</span> <span class="nx">x</span><span class="p">;</span>
<span class="c1">// Variables can be manually set to `undefined` like so</span>
<span class="kd">var</span> <span class="nx">x2</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span>
<span class="c1">// Declares a block-scoped variable named `y`, and implicitly sets it to</span>
<span class="c1">// `undefined`. The `let` keyword was introduced in ECMAScript 2015.</span>
<span class="kd">let</span> <span class="nx">y</span><span class="p">;</span>
<span class="c1">// Declares a block-scoped, un-reassignable variable named `z`, and sets it to</span>
<span class="c1">// a string literal. The `const` keyword was also introduced in ECMAScript 2015,</span>
<span class="c1">// and must be explicitly assigned to.</span>
<span class="c1">// The keyword `const` means constant, hence the variable cannot be reassigned</span>
<span class="c1">// as the value is `constant`.</span>
<span class="kd">const</span> <span class="nx">z</span> <span class="o">=</span> <span class="s2">"this value cannot be reassigned!"</span><span class="p">;</span>
<span class="c1">// Declares a variable named `myNumber`, and assigns a number literal (the value</span>
<span class="c1">// `2`) to it.</span>
<span class="kd">let</span> <span class="nx">myNumber</span> <span class="o">=</span> <span class="mf">2</span><span class="p">;</span>
<span class="c1">// Reassigns `myNumber`, setting it to a string literal (the value `"foo"`).</span>
<span class="c1">// JavaScript is a dynamically-typed language, so this is legal.</span>
<span class="nx">myNumber</span> <span class="o">=</span> <span class="s2">"foo"</span><span class="p">;</span>
</pre></div>
<p>Note the <a href="/wiki/Comment_(computer_programming)" title="Comment (computer programming)">comments</a> in the example above, all of which were preceded with two <a href="/wiki/Slash_(punctuation)" title="Slash (punctuation)">forward slashes</a>.
</p><p>There is no built-in <a href="/wiki/Input/output" title="Input/output">Input/output</a> functionality in JavaScript; the run-time environment provides that. The ECMAScript specification in edition 5.1 mentions:<sup id="cite_ref-65" class="reference"><a href="#cite_note-65">[65]</a></sup>
</p>
<blockquote><p>indeed, there are no provisions in this specification for input of external data or output of computed results.</p></blockquote>
<p>However, most runtime environments have a <code>console</code> object<sup id="cite_ref-66" class="reference"><a href="#cite_note-66">[66]</a></sup> that can be used to print output. Here is a minimalist <a href="/wiki/Hello_World_program" class="mw-redirect" title="Hello World program">Hello World program</a> in JavaScript:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">"Hello World!"</span><span class="p">);</span>
</pre></div>
<p>A simple <a href="/wiki/Recursion_(computer_science)" title="Recursion (computer science)">recursive</a> function:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">function</span> <span class="nx">factorial</span><span class="p">(</span><span class="nx">n</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">n</span> <span class="o">===</span> <span class="mf">0</span><span class="p">)</span>
<span class="k">return</span> <span class="mf">1</span><span class="p">;</span> <span class="c1">// 0! = 1</span>
<span class="k">return</span> <span class="nx">n</span> <span class="o">*</span> <span class="nx">factorial</span><span class="p">(</span><span class="nx">n</span> <span class="o">-</span> <span class="mf">1</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">factorial</span><span class="p">(</span><span class="mf">3</span><span class="p">);</span> <span class="c1">// returns 6</span>
</pre></div>
<p>An <a href="/wiki/Anonymous_function" title="Anonymous function">anonymous function</a> (or lambda):
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">function</span> <span class="nx">counter</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mf">0</span><span class="p">;</span>
<span class="k">return</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">++</span><span class="nx">count</span><span class="p">;</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">closure</span> <span class="o">=</span> <span class="nx">counter</span><span class="p">();</span>
<span class="nx">closure</span><span class="p">();</span> <span class="c1">// returns 1</span>
<span class="nx">closure</span><span class="p">();</span> <span class="c1">// returns 2</span>
<span class="nx">closure</span><span class="p">();</span> <span class="c1">// returns 3</span>
</pre></div>
<p>This example shows that, in JavaScript, <a href="/wiki/Closure_(computer_programming)" title="Closure (computer programming)">function closures</a> capture their non-local variables by reference.
</p><p>Arrow functions were first introduced in <a href="/wiki/ECMAScript#6th_Edition_-_ECMAScript_2015" title="ECMAScript">6th Edition - ECMAScript 2015</a> . They shorten the syntax for writing functions in JavaScript. Arrow functions are anonymous in nature; a variable is needed to refer to them in order to invoke them after their creation.
</p><p>Example of arrow function:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Arrow functions let us omit the `function` keyword.</span>
<span class="c1">// Here `long_example` points to an anonymous function value.</span>
<span class="kd">const</span> <span class="nx">long_example</span> <span class="o">=</span> <span class="p">(</span><span class="nx">input1</span><span class="p">,</span> <span class="nx">input2</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">"Hello, World!"</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">output</span> <span class="o">=</span> <span class="nx">input1</span> <span class="o">+</span> <span class="nx">input2</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">output</span><span class="p">;</span>
<span class="p">};</span>
<span class="c1">// If there are no braces, the arrow function simply returns the expression</span>
<span class="c1">// So here it's (input1 + input2)</span>
<span class="kd">const</span> <span class="nx">short_example</span> <span class="o">=</span> <span class="p">(</span><span class="nx">input1</span><span class="p">,</span> <span class="nx">input2</span><span class="p">)</span> <span class="p">=></span> <span class="nx">input1</span> <span class="o">+</span> <span class="nx">input2</span><span class="p">;</span>
<span class="nx">long_example</span><span class="p">(</span><span class="mf">2</span><span class="p">,</span> <span class="mf">3</span><span class="p">);</span> <span class="c1">// Prints "Hello, World!" and returns 5</span>
<span class="nx">short_example</span><span class="p">(</span><span class="mf">2</span><span class="p">,</span> <span class="mf">5</span><span class="p">);</span> <span class="c1">// Returns 7</span>
<span class="c1">// If an arrow function only has one parameter, the parentheses can be removed.</span>
<span class="kd">const</span> <span class="nx">no_parentheses</span> <span class="o">=</span> <span class="nx">input</span> <span class="p">=></span> <span class="nx">input</span> <span class="o">+</span> <span class="mf">2</span><span class="p">;</span>
<span class="nx">no_parentheses</span><span class="p">(</span><span class="mf">3</span><span class="p">);</span> <span class="c1">// Returns 5</span>
</pre></div>
<p>In JavaScript, <a href="/wiki/Object_(computer_science)" title="Object (computer science)">objects</a> are created in the same way as functions; this is known as a <a href="/wiki/Function_object" title="Function object">function object</a>.
</p><p>Object example:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">function</span> <span class="nx">Ball</span><span class="p">(</span><span class="nx">r</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">radius</span> <span class="o">=</span> <span class="nx">r</span><span class="p">;</span> <span class="c1">// the "r" argument is local to the ball object</span>
<span class="k">this</span><span class="p">.</span><span class="nx">area</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span> <span class="o">*</span> <span class="p">(</span><span class="nx">r</span> <span class="o">**</span> <span class="mf">2</span><span class="p">);</span> <span class="c1">// parentheses don't do anything but clarify</span>
<span class="c1">// objects can contain functions ("method")</span>
<span class="k">this</span><span class="p">.</span><span class="nx">show</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">drawCircle</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">radius</span><span class="p">);</span> <span class="c1">// references another function (that draws a circle)</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">myBall</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Ball</span><span class="p">(</span><span class="mf">5</span><span class="p">);</span> <span class="c1">// creates a new instance of the ball object with radius 5</span>
<span class="nx">myBall</span><span class="p">.</span><span class="nx">radius</span><span class="o">++</span><span class="p">;</span> <span class="c1">// object properties can usually be modified from the outside</span>
<span class="nx">myBall</span><span class="p">.</span><span class="nx">show</span><span class="p">();</span> <span class="c1">// using the inherited "show" function</span>
</pre></div>
<p><a href="/wiki/Variadic_function" title="Variadic function">Variadic function</a> demonstration (<code>arguments</code> is a special <a href="/wiki/Variable_(programming)" class="mw-redirect" title="Variable (programming)">variable</a>):<sup id="cite_ref-67" class="reference"><a href="#cite_note-67">[67]</a></sup>
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">function</span> <span class="nx">sum</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">let</span> <span class="nx">x</span> <span class="o">=</span> <span class="mf">0</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mf">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="o">++</span><span class="nx">i</span><span class="p">)</span>
<span class="nx">x</span> <span class="o">+=</span> <span class="nx">arguments</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">return</span> <span class="nx">x</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">sum</span><span class="p">(</span><span class="mf">1</span><span class="p">,</span> <span class="mf">2</span><span class="p">);</span> <span class="c1">// returns 3</span>
<span class="nx">sum</span><span class="p">(</span><span class="mf">1</span><span class="p">,</span> <span class="mf">2</span><span class="p">,</span> <span class="mf">3</span><span class="p">);</span> <span class="c1">// returns 6</span>
</pre></div>
<p><a href="/wiki/Immediately-invoked_function_expression" class="mw-redirect" title="Immediately-invoked function expression">Immediately-invoked function expressions</a> are often used to create closures. Closures allow gathering properties and methods in a namespace and making some of them private:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">let</span> <span class="nx">counter</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mf">0</span><span class="p">;</span> <span class="c1">// private property</span>
<span class="k">return</span> <span class="p">{</span> <span class="c1">// public methods</span>
<span class="nx">get</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">alert</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="p">},</span>
<span class="nx">set</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">i</span> <span class="o">=</span> <span class="nx">value</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">increment</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">alert</span><span class="p">(</span><span class="o">++</span><span class="nx">i</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">})();</span> <span class="c1">// module</span>
<span class="nx">counter</span><span class="p">.</span><span class="nx">get</span><span class="p">();</span> <span class="c1">// shows 0</span>
<span class="nx">counter</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="mf">6</span><span class="p">);</span>
<span class="nx">counter</span><span class="p">.</span><span class="nx">increment</span><span class="p">();</span> <span class="c1">// shows 7</span>
<span class="nx">counter</span><span class="p">.</span><span class="nx">increment</span><span class="p">();</span> <span class="c1">// shows 8</span>
</pre></div>
<p>Exporting and Importing modules in JavaScript<sup id="cite_ref-68" class="reference"><a href="#cite_note-68">[68]</a></sup>
</p><p>Export example:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="cm">/* mymodule.js */</span>
<span class="c1">// This function remains private, as it is not exported</span>
<span class="kd">let</span> <span class="nx">sum</span> <span class="o">=</span> <span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span> <span class="p">=></span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">a</span> <span class="o">+</span> <span class="nx">b</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Export variables</span>
<span class="k">export</span> <span class="kd">let</span> <span class="nx">name</span> <span class="o">=</span> <span class="s1">'Alice'</span><span class="p">;</span>
<span class="k">export</span> <span class="kd">let</span> <span class="nx">age</span> <span class="o">=</span> <span class="mf">23</span><span class="p">;</span>
<span class="c1">// Export named functions</span>
<span class="k">export</span> <span class="kd">function</span> <span class="nx">add</span><span class="p">(</span><span class="nx">num1</span><span class="p">,</span> <span class="nx">num2</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">num1</span> <span class="o">+</span> <span class="nx">num2</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Export class</span>
<span class="k">export</span> <span class="kd">class</span> <span class="nx">Multiplication</span> <span class="p">{</span>
<span class="nx">constructor</span><span class="p">(</span><span class="nx">num1</span><span class="p">,</span> <span class="nx">num2</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">num1</span> <span class="o">=</span> <span class="nx">num1</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">num2</span> <span class="o">=</span> <span class="nx">num2</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">add</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">sum</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">num1</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">num2</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
<p>Import example:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Import one property</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">add</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">'./mymodule.js'</span><span class="p">;</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">add</span><span class="p">(</span><span class="mf">1</span><span class="p">,</span> <span class="mf">2</span><span class="p">));</span> <span class="c1">// 3</span>
<span class="c1">// Import multiple properties</span>
<span class="k">import</span> <span class="p">{</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">age</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">'./mymodule.js'</span><span class="p">;</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">age</span><span class="p">);</span>
<span class="c1">//> "Alice", 23</span>
<span class="c1">// Import all properties from a module</span>
<span class="k">import</span> <span class="o">*</span> <span class="nx">from</span> <span class="s1">'./module.js'</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">age</span><span class="p">);</span>
<span class="c1">//> "Alice", 23</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">add</span><span class="p">(</span><span class="mf">1</span><span class="p">,</span><span class="mf">2</span><span class="p">));</span>
<span class="c1">//> 3</span>
</pre></div>
<h3><span class="mw-headline" id="More_advanced_example">More advanced example</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=23" title="Edit section: More advanced example">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>This sample code displays various JavaScript features.
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="cm">/* Finds the lowest common multiple (LCM) of two numbers */</span>
<span class="kd">function</span> <span class="nx">LCMCalculator</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// constructor function</span>
<span class="kd">let</span> <span class="nx">checkInt</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">x</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// inner function</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">x</span> <span class="o">%</span> <span class="mf">1</span> <span class="o">!==</span> <span class="mf">0</span><span class="p">)</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nx">TypeError</span><span class="p">(</span><span class="nx">x</span> <span class="o">+</span> <span class="s2">"is not an integer"</span><span class="p">);</span> <span class="c1">// var a = mouseX</span>
<span class="k">return</span> <span class="nx">x</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">this</span><span class="p">.</span><span class="nx">a</span> <span class="o">=</span> <span class="nx">checkInt</span><span class="p">(</span><span class="nx">x</span><span class="p">)</span>
<span class="c1">// semicolons ^^^^ are optional, a newline is enough</span>
<span class="k">this</span><span class="p">.</span><span class="nx">b</span> <span class="o">=</span> <span class="nx">checkInt</span><span class="p">(</span><span class="nx">y</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// The prototype of object instances created by a constructor is</span>
<span class="c1">// that constructor's "prototype" property.</span>
<span class="nx">LCMCalculator</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="p">{</span> <span class="c1">// object literal</span>
<span class="nx">constructor</span><span class="o">:</span> <span class="nx">LCMCalculator</span><span class="p">,</span> <span class="c1">// when reassigning a prototype, set the constructor property appropriately</span>
<span class="nx">gcd</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="c1">// method that calculates the greatest common divisor</span>
<span class="c1">// Euclidean algorithm:</span>
<span class="kd">let</span> <span class="nx">a</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">a</span><span class="p">),</span> <span class="nx">b</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">b</span><span class="p">),</span> <span class="nx">t</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">a</span> <span class="o"><</span> <span class="nx">b</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// swap variables</span>
<span class="c1">// t = b; b = a; a = t;</span>
<span class="p">[</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="nx">b</span><span class="p">,</span> <span class="nx">a</span><span class="p">];</span> <span class="c1">// swap using destructuring assignment (ES6)</span>
<span class="p">}</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">b</span> <span class="o">!==</span> <span class="mf">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">t</span> <span class="o">=</span> <span class="nx">b</span><span class="p">;</span>
<span class="nx">b</span> <span class="o">=</span> <span class="nx">a</span> <span class="o">%</span> <span class="nx">b</span><span class="p">;</span>
<span class="nx">a</span> <span class="o">=</span> <span class="nx">t</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Only need to calculate GCD once, so "redefine" this method.</span>
<span class="c1">// (Actually not redefinition—it's defined on the instance itself,</span>
<span class="c1">// so that this.gcd refers to this "redefinition" instead of LCMCalculator.prototype.gcd.</span>
<span class="c1">// Note that this leads to a wrong result if the LCMCalculator object members "a" and/or "b" are altered afterwards.)</span>
<span class="c1">// Also, 'gcd' === "gcd", this['gcd'] === this.gcd</span>
<span class="k">this</span><span class="p">[</span><span class="s1">'gcd'</span><span class="p">]</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">a</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">return</span> <span class="nx">a</span><span class="p">;</span>
<span class="p">},</span>
<span class="c1">// Object property names can be specified by strings delimited by double (") or single (') quotes.</span>
<span class="nx">lcm</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// Variable names do not collide with object properties, e.g., |lcm| is not |this.lcm|.</span>
<span class="c1">// not using |this.a*this.b| to avoid FP precision issues</span>
<span class="kd">let</span> <span class="nx">lcm</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">a</span> <span class="o">/</span> <span class="k">this</span><span class="p">.</span><span class="nx">gcd</span><span class="p">()</span> <span class="o">*</span> <span class="k">this</span><span class="p">.</span><span class="nx">b</span><span class="p">;</span>
<span class="c1">// Only need to calculate lcm once, so "redefine" this method.</span>
<span class="k">this</span><span class="p">.</span><span class="nx">lcm</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">lcm</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">return</span> <span class="nx">lcm</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">toString</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="s2">"LCMCalculator: a = "</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">a</span> <span class="o">+</span> <span class="s2">", b = "</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">b</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="c1">// Define generic output function; this implementation only works for Web browsers</span>
<span class="kd">function</span> <span class="nx">output</span><span class="p">(</span><span class="nx">x</span><span class="p">)</span> <span class="p">{</span>
<span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">createTextNode</span><span class="p">(</span><span class="nx">x</span><span class="p">));</span>
<span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'br'</span><span class="p">));</span>
<span class="p">}</span>
<span class="c1">// Note: Array's map() and forEach() are defined in JavaScript 1.6.</span>
<span class="c1">// They are used here to demonstrate JavaScript's inherent functional nature.</span>
<span class="p">[</span>
<span class="p">[</span><span class="mf">25</span><span class="p">,</span> <span class="mf">55</span><span class="p">],</span>
<span class="p">[</span><span class="mf">21</span><span class="p">,</span> <span class="mf">56</span><span class="p">],</span>
<span class="p">[</span><span class="mf">22</span><span class="p">,</span> <span class="mf">58</span><span class="p">],</span>
<span class="p">[</span><span class="mf">28</span><span class="p">,</span> <span class="mf">56</span><span class="p">]</span>
<span class="p">].</span><span class="nx">map</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">pair</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// array literal + mapping function</span>
<span class="k">return</span> <span class="k">new</span> <span class="nx">LCMCalculator</span><span class="p">(</span><span class="nx">pair</span><span class="p">[</span><span class="mf">0</span><span class="p">],</span> <span class="nx">pair</span><span class="p">[</span><span class="mf">1</span><span class="p">]);</span>
<span class="p">}).</span><span class="nx">sort</span><span class="p">((</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span> <span class="p">=></span> <span class="nx">a</span><span class="p">.</span><span class="nx">lcm</span><span class="p">()</span> <span class="o">-</span> <span class="nx">b</span><span class="p">.</span><span class="nx">lcm</span><span class="p">())</span> <span class="c1">// sort with this comparative function; => is a shorthand form of a function, called "arrow function"</span>
<span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="nx">printResult</span><span class="p">);</span>
<span class="kd">function</span> <span class="nx">printResult</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">output</span><span class="p">(</span><span class="nx">obj</span> <span class="o">+</span> <span class="s2">", gcd = "</span> <span class="o">+</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">gcd</span><span class="p">()</span> <span class="o">+</span> <span class="s2">", lcm = "</span> <span class="o">+</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">lcm</span><span class="p">());</span>
<span class="p">}</span>
</pre></div>
<p>The following output should be displayed in the browser window.
</p>
<div class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><pre><span></span>LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56
LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168
LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275
LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638
</pre></div>
<h2><span class="mw-headline" id="Security">Security</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=24" title="Edit section: Security">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Browser_security" title="Browser security">Browser security</a></div>
<p>JavaScript and the <a href="/wiki/Document_Object_Model" title="Document Object Model">DOM</a> provide the potential for malicious authors to deliver scripts to run on a client computer via the Web. Browser authors minimize this risk using two restrictions. First, scripts run in a <a href="/wiki/Sandbox_(computer_security)" title="Sandbox (computer security)">sandbox</a> in which they can only perform Web-related actions, not general-purpose programming tasks like creating files. Second, scripts are constrained by the <a href="/wiki/Same-origin_policy" title="Same-origin policy">same-origin policy</a>: scripts from one Web site do not have access to information such as usernames, passwords, or cookies sent to another site. Most JavaScript-related security bugs are breaches of either the same origin policy or the sandbox.
</p><p>There are subsets of general JavaScript—ADsafe, Secure ECMAScript (SES)—that provide greater levels of security, especially on code created by third parties (such as advertisements).<sup id="cite_ref-69" class="reference"><a href="#cite_note-69">[69]</a></sup><sup id="cite_ref-70" class="reference"><a href="#cite_note-70">[70]</a></sup> <a href="/wiki/Caja_project" title="Caja project">Caja</a> is another project for safe embedding and isolation of third-party JavaScript and HTML.
</p><p><a href="/wiki/Content_Security_Policy" title="Content Security Policy">Content Security Policy</a> is the main intended method of ensuring that only trusted code is executed on a Web page.
</p>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Content_Security_Policy" title="Content Security Policy">Content Security Policy</a></div>
<h3><span class="mw-headline" id="Cross-site_vulnerabilities">Cross-site vulnerabilities</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=25" title="Edit section: Cross-site vulnerabilities">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div role="note" class="hatnote navigation-not-searchable">Main articles: <a href="/wiki/Cross-site_scripting" title="Cross-site scripting">Cross-site scripting</a> and <a href="/wiki/Cross-site_request_forgery" title="Cross-site request forgery">Cross-site request forgery</a></div>
<p>A common JavaScript-related security problem is <a href="/wiki/Cross-site_scripting" title="Cross-site scripting">cross-site scripting</a> (XSS), a violation of the <a href="/wiki/Same-origin_policy" title="Same-origin policy">same-origin policy</a>. XSS vulnerabilities occur when an attacker is able to cause a target Web site, such as an online banking website, to include a malicious script in the webpage presented to a victim. The script in this example can then access the banking application with the privileges of the victim, potentially disclosing secret information or transferring money without the victim's authorization. A solution to XSS vulnerabilities is to use <i>HTML escaping</i> whenever displaying untrusted data.
</p><p>Some browsers include partial protection against <i>reflected</i> XSS attacks, in which the attacker provides a URL including malicious script. However, even users of those browsers are vulnerable to other XSS attacks, such as those where the malicious code is stored in a database. Only correct design of Web applications on the server side can fully prevent XSS.
</p><p>XSS vulnerabilities can also occur because of implementation mistakes by browser authors.<sup id="cite_ref-71" class="reference"><a href="#cite_note-71">[71]</a></sup>
</p><p>Another cross-site vulnerability is <a href="/wiki/Cross-site_request_forgery" title="Cross-site request forgery">cross-site request forgery</a> (CSRF). In CSRF, code on an attacker's site tricks the victim's browser into taking actions the user did not intend at a target site (like transferring money at a bank). When target sites rely solely on cookies for request authentication, requests originating from code on the attacker's site can carry the same valid login credentials of the initiating user. In general, the solution to CSRF is to require an authentication value in a hidden form field, and not only in the cookies, to authenticate any request that might have lasting effects. Checking the HTTP Referrer header can also help.
</p><p>"JavaScript hijacking" is a type of CSRF attack in which a <code><script></code> tag on an attacker's site exploits a page on the victim's site that returns private information such as <a href="/wiki/JSON" title="JSON">JSON</a> or JavaScript. Possible solutions include:
</p>
<ul><li>requiring an authentication token in the <a href="/wiki/POST_(HTTP)" title="POST (HTTP)">POST</a> and <a href="/wiki/GET_(HTTP)" class="mw-redirect" title="GET (HTTP)">GET</a> parameters for any response that returns private information.</li></ul>
<h3><span class="mw-headline" id="Misplaced_trust_in_the_client">Misplaced trust in the client</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=26" title="Edit section: Misplaced trust in the client">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Developers of client-server applications must recognize that untrusted clients may be under the control of attackers. The application author cannot assume that their JavaScript code will run as intended (or at all) because any secret embedded in the code could be extracted by a determined adversary. Some implications are:
</p>
<ul><li>Web site authors cannot perfectly conceal how their JavaScript operates because the raw source code must be sent to the client. The code can be <a href="/wiki/Obfuscated_code" class="mw-redirect" title="Obfuscated code">obfuscated</a>, but obfuscation can be reverse-engineered.</li>
<li>JavaScript form validation only provides convenience for users, not security. If a site verifies that the user agreed to its terms of service, or filters invalid characters out of fields that should only contain numbers, it must do so on the server, not only the client.</li>
<li>Scripts can be selectively disabled, so JavaScript cannot be relied on to prevent operations such as right-clicking on an image to save it.<sup id="cite_ref-72" class="reference"><a href="#cite_note-72">[72]</a></sup></li>
<li>It is considered very bad practice to embed sensitive information such as passwords in JavaScript because it can be extracted by an attacker.<sup id="cite_ref-73" class="reference"><a href="#cite_note-73">[73]</a></sup></li></ul>
<h3><span class="mw-headline" id="Misplaced_trust_in_developers">Misplaced trust in developers</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=27" title="Edit section: Misplaced trust in developers">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Package management systems such as <a href="/wiki/Npm_(software)" title="Npm (software)">npm</a> and Bower are popular with JavaScript developers. Such systems allow a developer to easily manage their program's dependencies upon other developer's program libraries. Developers trust that the maintainers of the libraries will keep them secure and up to date, but that is not always the case. A vulnerability has emerged because of this blind trust. Relied-upon libraries can have new releases that cause bugs or vulnerabilities to appear in all programs that rely upon the libraries. Inversely, a library can go unpatched with known vulnerabilities out in the wild. In a study done looking over a sample of 133k websites, researchers found 37% of the websites included a library with at least one known vulnerability.<sup id="cite_ref-jslibs_74-0" class="reference"><a href="#cite_note-jslibs-74">[74]</a></sup> "The median lag between the oldest library version used on each website and the newest available version of that library is 1,177 days in ALEXA, and development of some libraries still in active use ceased years ago."<sup id="cite_ref-jslibs_74-1" class="reference"><a href="#cite_note-jslibs-74">[74]</a></sup> Another possibility is that the maintainer of a library may remove the library entirely. This occurred in March 2016 when Azer Koçulu removed his repository from <a href="/wiki/Npm_(software)" title="Npm (software)">npm</a>. This caused all tens of thousands of programs and websites depending upon his libraries to break.<sup id="cite_ref-75" class="reference"><a href="#cite_note-75">[75]</a></sup><sup id="cite_ref-76" class="reference"><a href="#cite_note-76">[76]</a></sup>
</p>
<h3><span class="mw-headline" id="Browser_and_plugin_coding_errors">Browser and plugin coding errors</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=28" title="Edit section: Browser and plugin coding errors">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>JavaScript provides an interface to a wide range of browser capabilities, some of which may have flaws such as <a href="/wiki/Buffer_overflow" title="Buffer overflow">buffer overflows</a>. These flaws can allow attackers to write scripts that would run any code they wish on the user's system. This code is not by any means limited to another JavaScript application. For example, a buffer overrun exploit can allow an attacker to gain access to the operating system's <a href="/wiki/API" title="API">API</a> with superuser privileges.
</p><p>These flaws have affected major browsers including Firefox,<sup id="cite_ref-77" class="reference"><a href="#cite_note-77">[77]</a></sup> Internet Explorer,<sup id="cite_ref-78" class="reference"><a href="#cite_note-78">[78]</a></sup> and Safari.<sup id="cite_ref-79" class="reference"><a href="#cite_note-79">[79]</a></sup>
</p><p>Plugins, such as video players, <a href="/wiki/Adobe_Flash#Flash_client_security" title="Adobe Flash">Adobe Flash</a>, and the wide range of <a href="/wiki/ActiveX" title="ActiveX">ActiveX</a> controls enabled by default in Microsoft Internet Explorer, may also have flaws exploitable via JavaScript (such flaws have been exploited in the past).<sup id="cite_ref-80" class="reference"><a href="#cite_note-80">[80]</a></sup><sup id="cite_ref-81" class="reference"><a href="#cite_note-81">[81]</a></sup>
</p><p>In Windows Vista, Microsoft has attempted to contain the risks of bugs such as buffer overflows by running the Internet Explorer process with limited privileges.<sup id="cite_ref-82" class="reference"><a href="#cite_note-82">[82]</a></sup> <a href="/wiki/Google_Chrome" title="Google Chrome">Google Chrome</a> similarly confines its page renderers to their own "sandbox".
</p>
<h3><span class="mw-headline" id="Sandbox_implementation_errors">Sandbox implementation errors</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=29" title="Edit section: Sandbox implementation errors">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Web browsers are capable of running JavaScript outside the sandbox, with the privileges necessary to, for example, create or delete files. Such privileges are not intended to be granted to code from the Web.
</p><p>Incorrectly granting privileges to JavaScript from the Web has played a role in vulnerabilities in both Internet Explorer<sup id="cite_ref-83" class="reference"><a href="#cite_note-83">[83]</a></sup> and Firefox.<sup id="cite_ref-84" class="reference"><a href="#cite_note-84">[84]</a></sup> In Windows XP Service Pack 2, Microsoft demoted JScript's privileges in Internet Explorer.<sup id="cite_ref-85" class="reference"><a href="#cite_note-85">[85]</a></sup>
</p><p><a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> allows JavaScript source files on a computer's hard drive to be launched as general-purpose, non-sandboxed programs (see: <a href="/wiki/Windows_Script_Host" title="Windows Script Host">Windows Script Host</a>). This makes JavaScript (like <a href="/wiki/VBScript" title="VBScript">VBScript</a>) a theoretically viable vector for a <a href="/wiki/Trojan_horse_(computing)" title="Trojan horse (computing)">Trojan horse</a>, although JavaScript Trojan horses are uncommon in practice.<sup id="cite_ref-86" class="reference"><a href="#cite_note-86">[86]</a></sup><sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability"><span title="The material near this tag failed verification of its source citation(s). (March 2017)">failed verification</span></a></i>]</sup>
</p>
<h3><span class="mw-headline" id="Hardware_vulnerabilities">Hardware vulnerabilities</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=30" title="Edit section: Hardware vulnerabilities">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>In 2015, a JavaScript-based proof-of-concept implementation of a <a href="/wiki/Rowhammer" class="mw-redirect" title="Rowhammer">rowhammer</a> attack was described in a paper by security researchers.<sup id="cite_ref-87" class="reference"><a href="#cite_note-87">[87]</a></sup><sup id="cite_ref-88" class="reference"><a href="#cite_note-88">[88]</a></sup><sup id="cite_ref-89" class="reference"><a href="#cite_note-89">[89]</a></sup><sup id="cite_ref-90" class="reference"><a href="#cite_note-90">[90]</a></sup>
</p><p>In 2017, a JavaScript-based attack via browser was demonstrated that could bypass <a href="/wiki/Address_space_layout_randomization" title="Address space layout randomization">ASLR</a>. It's called "ASLR⊕Cache" or AnC.<sup id="cite_ref-91" class="reference"><a href="#cite_note-91">[91]</a></sup><sup id="cite_ref-92" class="reference"><a href="#cite_note-92">[92]</a></sup>
</p><p>In 2018, the paper that announced the <a href="/wiki/Spectre_(security_vulnerability)" title="Spectre (security vulnerability)">Spectre</a> attacks against Speculative Execution in Intel and other processors included a JavaScript implementation.<sup id="cite_ref-93" class="reference"><a href="#cite_note-93">[93]</a></sup>
</p>
<h2><span class="mw-headline" id="Development_tools">Development tools</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=31" title="Edit section: Development tools">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<p>Important tools have evolved with the language.
</p>
<ul><li>Every major web browser has built-in <a href="/wiki/Web_development_tools" title="Web development tools">web development tools</a>, including a JavaScript <a href="/wiki/Debugger" title="Debugger">debugger</a>.</li>
<li><a href="/wiki/Static_program_analysis" title="Static program analysis">Static program analysis</a> tools, such as <a href="/wiki/ESLint" title="ESLint">ESLint</a> and <a href="/wiki/JSLint" title="JSLint">JSLint</a>, scan JavaScript code for conformance to a set of standards and guidelines.</li>
<li>Some browsers have built-in <a href="/wiki/Profiling_(computer_programming)" title="Profiling (computer programming)">profilers</a>. Stand-alone profiling libraries have also been created, such as benchmark.js and jsbench.<sup id="cite_ref-94" class="reference"><a href="#cite_note-94">[94]</a></sup><sup id="cite_ref-auto1_95-0" class="reference"><a href="#cite_note-auto1-95">[95]</a></sup></li>
<li>Many <a href="/wiki/Text_editor" title="Text editor">text editors</a> have syntax highlighting support for JavaScript code.</li></ul>
<h2><span class="mw-headline" id="Related_technologies">Related technologies</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=32" title="Edit section: Related technologies">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Java">Java</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=33" title="Edit section: Java">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>A common misconception is that JavaScript is similar or closely related to <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>. It is true that both have a C-like syntax (the C language being their most immediate common ancestor language). They also are both typically <a href="/wiki/Sandbox_(computer_security)" title="Sandbox (computer security)">sandboxed</a> (when used inside a browser), and JavaScript was designed with Java's syntax and standard library in mind. In particular, all Java keywords were reserved in original JavaScript, JavaScript's standard library follows Java's naming conventions, and JavaScript's <code class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" id="" style="" dir="ltr"><span class="nb">Math</span></code> and <code class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" id="" style="" dir="ltr"><span class="nb">Date</span></code> objects are based on classes from Java 1.0,<sup id="cite_ref-popularity_96-0" class="reference"><a href="#cite_note-popularity-96">[96]</a></sup> but the similarities end there.
</p><p><a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a> and JavaScript both first appeared in 1995, but Java was developed by <a href="/wiki/James_Gosling" title="James Gosling">James Gosling</a> of Sun Microsystems, and JavaScript by <a href="/wiki/Brendan_Eich" title="Brendan Eich">Brendan Eich</a> of Netscape Communications.
</p><p>The differences between the two languages are more prominent than their similarities. Java has <a href="/wiki/Static_typing" class="mw-redirect" title="Static typing">static typing</a>, while JavaScript's typing is <a href="/wiki/Dynamic_typing" class="mw-redirect" title="Dynamic typing">dynamic</a>. Java is loaded from compiled bytecode, while JavaScript is loaded as human-readable source code. Java's objects are <a href="/wiki/Class-based_programming" title="Class-based programming">class-based</a>, while JavaScript's are <a href="/wiki/Prototype-based_programming" title="Prototype-based programming">prototype-based</a>. Finally, Java did not support functional programming until Java 8, while JavaScript has done so from the beginning, being influenced by <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>.
</p>
<h3><span class="mw-headline" id="JSON">JSON</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=34" title="Edit section: JSON">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p><a href="/wiki/JSON" title="JSON">JSON</a>, or JavaScript Object Notation, is a general-purpose data interchange format that is defined as a subset of JavaScript's object literal syntax.
</p>
<h3><span class="mw-headline" id="WebAssembly">WebAssembly</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=35" title="Edit section: WebAssembly">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Since 2017, web browsers have supported <a href="/wiki/WebAssembly" title="WebAssembly">WebAssembly</a>, a binary format that enables a <a href="/wiki/JavaScript_engine" title="JavaScript engine">JavaScript engine</a> to execute performance-critical portions of <a href="/wiki/Web_page" title="Web page">web page</a> scripts close to native speed.<sup id="cite_ref-97" class="reference"><a href="#cite_note-97">[97]</a></sup> WebAssembly code runs in the same <a href="/wiki/Sandbox_(computer_security)" title="Sandbox (computer security)">sandbox</a> as regular JavaScript code.
</p><p><a href="/wiki/Asm.js" title="Asm.js">asm.js</a> is a subset of JavaScript that served as the forerunner of WebAssembly.<sup id="cite_ref-98" class="reference"><a href="#cite_note-98">[98]</a></sup>
</p><p><span class="anchor" id="transpilers"></span>
</p>
<h3><span class="mw-headline" id="Transpilers">Transpilers</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=36" title="Edit section: Transpilers">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>JavaScript is the dominant client-side language of the Web, and many websites are script-heavy. Thus <a href="/wiki/Transpiler" class="mw-redirect" title="Transpiler">transpilers</a> have been created to convert code written in other languages, which can aid the development process.<sup id="cite_ref-transpilers_29-1" class="reference"><a href="#cite_note-transpilers-29">[29]</a></sup>
</p>
<h2><span class="mw-headline" id="References">References</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=37" title="Edit section: References">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<style data-mw-deduplicate="TemplateStyles:r1011085734">.mw-parser-output .reflist{font-size:90%;margin-bottom:0.5em;list-style-type:decimal}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-press_release-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-press_release_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-press_release_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html">Press release announcing JavaScript</a>, "Netscape and Sun announce JavaScript", PR Newswire, December 4, 1995</span>
</li>
<li id="cite_note-auto-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-auto_2-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r999302996">.mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:linear-gradient(transparent,transparent),url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.ecma-international.org/ecma-262/11.0/">"Standard ECMA-262"</a>. Ecma International. June 17, 2020.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Standard+ECMA-262&rft.pub=Ecma+International&rft.date=2020-06-17&rft_id=https%3A%2F%2Fwww.ecma-international.org%2Fecma-262%2F11.0%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-node.js_ECMAScript_Modules_Specification-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-node.js_ECMAScript_Modules_Specification_3-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/nodejs/node-eps/blob/master/002-es-modules.md">"nodejs/node-eps"</a>. <i>GitHub</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=GitHub&rft.atitle=nodejs%2Fnode-eps&rft_id=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode-eps%2Fblob%2Fmaster%2F002-es-modules.md&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-looklikejava-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-looklikejava_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-looklikejava_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFSeibel2009" class="citation book cs1">Seibel, Peter (September 16, 2009). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=nneBa6-mWfgC&q=The+immediate+concern+at+Netscape+was+it+must+look+like+Java.&pg=PA141"><i>Coders at Work: Reflections on the Craft of Programming</i></a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/9781430219484" title="Special:BookSources/9781430219484"><bdi>9781430219484</bdi></a><span class="reference-accessdate">. Retrieved <span class="nowrap">December 25,</span> 2018</span>. <q>Eich: The immediate concern at Netscape was it must look like Java.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Coders+at+Work%3A+Reflections+on+the+Craft+of+Programming&rft.date=2009-09-16&rft.isbn=9781430219484&rft.aulast=Seibel&rft.aufirst=Peter&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DnneBa6-mWfgC%26q%3DThe%2Bimmediate%2Bconcern%2Bat%2BNetscape%2Bwas%2Bit%2Bmust%2Blook%2Blike%2BJava.%26pg%3DPA141&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-origin-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-origin_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-origin_5-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-origin_5-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-origin_5-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-origin_5-4"><sup><i><b>e</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://speakingjs.com/es5/ch04.html">"Chapter 4. How JavaScript Was Created"</a>. <i>speakingjs.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=speakingjs.com&rft.atitle=Chapter+4.+How+JavaScript+Was+Created&rft_id=http%3A%2F%2Fspeakingjs.com%2Fes5%2Fch04.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=1EyRscXrehw">"Brendan Eich: An Introduction to JavaScript, JSConf 2010"</a>. p. 22m<span class="reference-accessdate">. Retrieved <span class="nowrap">November 25,</span> 2019</span>. <q>Eich: "function", eight letters, I was influenced by AWK.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Brendan+Eich%3A+An+Introduction+to+JavaScript%2C+JSConf+2010&rft.pages=22m&rft_id=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D1EyRscXrehw&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFEich1998" class="citation book cs1"><a href="/wiki/Brendan_Eich" title="Brendan Eich">Eich, Brendan</a> (1998). "Foreword". In <a href="/wiki/Danny_Goodman" title="Danny Goodman">Goodman, Danny</a> (ed.). <span class="cs1-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/javascriptbible000good"><i>JavaScript Bible</i></a></span> (3rd ed.). <a href="/wiki/John_Wiley_%26_Sons" class="mw-redirect" title="John Wiley & Sons">John Wiley & Sons</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-7645-3188-3" title="Special:BookSources/0-7645-3188-3"><bdi>0-7645-3188-3</bdi></a>. <a href="/wiki/LCCN_(identifier)" class="mw-redirect" title="LCCN (identifier)">LCCN</a> <a rel="nofollow" class="external text" href="//lccn.loc.gov/97078208">97078208</a>. <a href="/wiki/OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a> <a rel="nofollow" class="external text" href="//www.worldcat.org/oclc/38888873">38888873</a>. <a href="/wiki/OL_(identifier)" class="mw-redirect" title="OL (identifier)">OL</a> <a rel="nofollow" class="external text" href="//openlibrary.org/books/OL712205M">712205M</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Foreword&rft.btitle=JavaScript+Bible&rft.edition=3rd&rft.pub=John+Wiley+%26+Sons&rft.date=1998&rft_id=info%3Aoclcnum%2F38888873&rft_id=info%3Alccn%2F97078208&rft.isbn=0-7645-3188-3&rft.aulast=Eich&rft.aufirst=Brendan&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fjavascriptbible000good&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://dictionary.reference.com/browse/javascript">"JavaScript"</a>. <i>Collins English Dictionary – Complete & Unabridged 2012 Digital Edition</i>. William Collins Sons & Co. 2012<span class="reference-accessdate">. Retrieved <span class="nowrap">August 21,</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Collins+English+Dictionary+%E2%80%93+Complete+%26+Unabridged+2012+Digital+Edition&rft.atitle=JavaScript&rft.date=2012&rft_id=http%3A%2F%2Fdictionary.reference.com%2Fbrowse%2Fjavascript&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-tc39-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-tc39_9-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://tc39.es/ecma262/#sec-overview">"ECMAScript® 2020 Language Specification"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=ECMAScript%C2%AE+2020+Language+Specification&rft_id=https%3A%2F%2Ftc39.es%2Fecma262%2F%23sec-overview&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFFlanagan" class="citation book cs1">Flanagan, David. <i>JavaScript - The definitive guide</i> (6 ed.). p. 1. <q>JavaScript is part of the triad of technologies that all Web developers must learn: HTML to specify the content of web pages, CSS to specify the presentation of web pages and JavaScript to specify the behaviour of web pages.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=JavaScript+-+The+definitive+guide&rft.pages=1&rft.edition=6&rft.aulast=Flanagan&rft.aufirst=David&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-deployedstats-11"><span class="mw-cite-backlink">^ <a href="#cite_ref-deployedstats_11-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-deployedstats_11-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://w3techs.com/technologies/details/cp-javascript/">"Usage statistics of JavaScript as client-side programming language on websites"</a>. <i>w3techs.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-02-21</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=w3techs.com&rft.atitle=Usage+statistics+of+JavaScript+as+client-side+programming+language+on+websites&rft_id=https%3A%2F%2Fw3techs.com%2Ftechnologies%2Fdetails%2Fcp-javascript%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation news cs1"><a rel="nofollow" class="external text" href="https://www.bloomberg.com/video/67758394">"Bloomberg Game Changers: Marc Andreessen"</a>. Bloomberg. March 17, 2011<span class="reference-accessdate">. Retrieved <span class="nowrap">December 7,</span> 2011</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Bloomberg+Game+Changers%3A+Marc+Andreessen&rft.date=2011-03-17&rft_id=https%3A%2F%2Fwww.bloomberg.com%2Fvideo%2F67758394&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFEnzer2018" class="citation web cs1">Enzer, Larry (August 31, 2018). <a rel="nofollow" class="external text" href="https://www.mwdwebsites.com/nj-web-design-web-browsers.html">"The Evolution of the Web Browsers"</a>. <i>Monmouth Web Developers</i><span class="reference-accessdate">. Retrieved <span class="nowrap">August 31,</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Monmouth+Web+Developers&rft.atitle=The+Evolution+of+the+Web+Browsers&rft.date=2018-08-31&rft.aulast=Enzer&rft.aufirst=Larry&rft_id=https%3A%2F%2Fwww.mwdwebsites.com%2Fnj-web-design-web-browsers.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-techvision-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-techvision_14-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080208124612/http://wp.netscape.com/comprod/columns/techvision/innovators_be.html">"TechVision: Innovators of the Net: Brendan Eich and JavaScript"</a>. Archived from <a rel="nofollow" class="external text" href="http://wp.netscape.com/comprod/columns/techvision/innovators_be.html">the original</a> on February 8, 2008.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=TechVision%3A+Innovators+of+the+Net%3A+Brendan+Eich+and+JavaScript&rft_id=http%3A%2F%2Fwp.netscape.com%2Fcomprod%2Fcolumns%2Ftechvision%2Finnovators_be.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFFin_JS2016" class="citation cs2">Fin JS (June 17, 2016), <a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=XOmhtfTrRxc&t=2m5s"><i>Brendan Eich - CEO of Brave</i></a><span class="reference-accessdate">, retrieved <span class="nowrap">February 7,</span> 2018</span></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Brendan+Eich+-+CEO+of+Brave&rft.date=2016-06-17&rft.au=Fin+JS&rft_id=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DXOmhtfTrRxc%26t%3D2m5s&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-O'Reilly-2001-16"><span class="mw-cite-backlink">^ <a href="#cite_ref-O'Reilly-2001_16-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-O'Reilly-2001_16-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFChampeon2001" class="citation web cs1">Champeon, Steve (April 6, 2001). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160719020828/http://archive.oreilly.com/pub/a/javascript/2001/04/06/js_history.html">"JavaScript, How Did We Get Here?"</a>. <i>oreilly.com</i>. Archived from <a rel="nofollow" class="external text" href="http://archive.oreilly.com/pub/a/javascript/2001/04/06/js_history.html">the original</a> on July 19, 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">July 16,</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=oreilly.com&rft.atitle=JavaScript%2C+How+Did+We+Get+Here%3F&rft.date=2001-04-06&rft.aulast=Champeon&rft.aufirst=Steve&rft_id=http%3A%2F%2Farchive.oreilly.com%2Fpub%2Fa%2Fjavascript%2F2001%2F04%2F06%2Fjs_history.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://news.microsoft.com/1996/05/29/microsoft-internet-explorer-3-0-beta-now-available/">"Microsoft Internet Explorer 3.0 Beta Now Available"</a>. <i>microsoft.com</i>. Microsoft. May 29, 1996<span class="reference-accessdate">. Retrieved <span class="nowrap">July 16,</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=microsoft.com&rft.atitle=Microsoft+Internet+Explorer+3.0+Beta+Now+Available&rft.date=1996-05-29&rft_id=http%3A%2F%2Fnews.microsoft.com%2F1996%2F05%2F29%2Fmicrosoft-internet-explorer-3-0-beta-now-available%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFMcCracken2010" class="citation web cs1">McCracken, Harry (September 16, 2010). <a rel="nofollow" class="external text" href="http://www.technologizer.com/2010/09/16/the-unwelcome-return-of-best-viewed-with-internet-explorer/">"The Unwelcome Return of "Best Viewed with Internet Explorer<span class="cs1-kern-right">"</span>"</a>. <i>technologizer.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">July 16,</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=technologizer.com&rft.atitle=The+Unwelcome+Return+of+%22Best+Viewed+with+Internet+Explorer%22&rft.date=2010-09-16&rft.aulast=McCracken&rft.aufirst=Harry&rft_id=http%3A%2F%2Fwww.technologizer.com%2F2010%2F09%2F16%2Fthe-unwelcome-return-of-best-viewed-with-internet-explorer%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-searchenginejournal.com-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-searchenginejournal.com_19-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.searchenginejournal.com/mozilla-firefox-internet-browser-market-share-gains-to-74/1082/">"Mozilla Firefox Internet Browser Market Share Gains to 7.4%"</a>. Search Engine Journal. November 24, 2004<span class="reference-accessdate">. Retrieved <span class="nowrap">December 7,</span> 2011</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Mozilla+Firefox+Internet+Browser+Market+Share+Gains+to+7.4%25&rft.pub=Search+Engine+Journal&rft.date=2004-11-24&rft_id=http%3A%2F%2Fwww.searchenginejournal.com%2Fmozilla-firefox-internet-browser-market-share-gains-to-74%2F1082%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFWeber2005" class="citation news cs1">Weber, Tim (May 9, 2005). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170925233936/http://news.bbc.co.uk/2/hi/business/4508897.stm">"The assault on software giant Microsoft"</a>. <i><a href="/wiki/BBC_News" title="BBC News">BBC News</a></i>. Archived from <a rel="nofollow" class="external text" href="http://news.bbc.co.uk/1/hi/business/4508897.stm">the original</a> on September 25, 2017.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=BBC+News&rft.atitle=The+assault+on+software+giant+Microsoft&rft.date=2005-05-09&rft.aulast=Weber&rft.aufirst=Tim&rft_id=http%3A%2F%2Fnews.bbc.co.uk%2F1%2Fhi%2Fbusiness%2F4508897.stm&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.pcgameshardware.com/aid,687738/Big-browser-comparison-test-Internet-Explorer-vs-Firefox-Opera-Safari-and-Chrome-Update-Firefox-35-Final/Practice/">"Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome"</a>. <i>PC Games Hardware</i>. Computec Media AG<span class="reference-accessdate">. Retrieved <span class="nowrap">June 28,</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=PC+Games+Hardware&rft.atitle=Big+browser+comparison+test%3A+Internet+Explorer+vs.+Firefox%2C+Opera%2C+Safari+and+Chrome&rft_id=http%3A%2F%2Fwww.pcgameshardware.com%2Faid%2C687738%2FBig-browser-comparison-test-Internet-Explorer-vs-Firefox-Opera-Safari-and-Chrome-Update-Firefox-35-Final%2FPractice%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lifehacker.com/5286869/lifehacker-speed-tests-safari-4-chrome-2-and-more">"Lifehacker Speed Tests: Safari 4, Chrome 2"</a>. <a href="/wiki/Lifehacker" title="Lifehacker">Lifehacker</a><span class="reference-accessdate">. Retrieved <span class="nowrap">June 28,</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Lifehacker+Speed+Tests%3A+Safari+4%2C+Chrome+2&rft.pub=Lifehacker&rft_id=http%3A%2F%2Flifehacker.com%2F5286869%2Flifehacker-speed-tests-safari-4-chrome-2-and-more&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://brendaneich.com/2008/08/tracemonkey-javascript-lightspeed/">"TraceMonkey: JavaScript Lightspeed, Brendan Eich's Blog"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">July 22,</span> 2020</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=TraceMonkey%3A+JavaScript+Lightspeed%2C+Brendan+Eich%27s+Blog&rft_id=https%3A%2F%2Fbrendaneich.com%2F2008%2F08%2Ftracemonkey-javascript-lightspeed%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.wired.com/2010/09/mozilla-asks-are-we-fast-yet/">"Mozilla asks, 'Are we fast yet?<span class="cs1-kern-right">'</span>"</a>. <i>Wired</i><span class="reference-accessdate">. Retrieved <span class="nowrap">January 18,</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Wired&rft.atitle=Mozilla+asks%2C+%27Are+we+fast+yet%3F%27&rft_id=https%3A%2F%2Fwww.wired.com%2F2010%2F09%2Fmozilla-asks-are-we-fast-yet%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://es6-features.org/">"ECMAScript 6: New Features: Overview and Comparison"</a>. <i>es6-features.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">March 19,</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=es6-features.org&rft.atitle=ECMAScript+6%3A+New+Features%3A+Overview+and+Comparison&rft_id=http%3A%2F%2Fes6-features.org%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-branscombe-26"><span class="mw-cite-backlink">^ <a href="#cite_ref-branscombe_26-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-branscombe_26-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFBranscombe2016" class="citation web cs1">Branscombe, Mary (2016-05-04). <a rel="nofollow" class="external text" href="https://thenewstack.io/whats-new-es2016/">"JavaScript Standard Moves to Yearly Release Schedule; Here is What's New for ES16"</a>. <i>The New Stack</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2021-01-15</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=The+New+Stack&rft.atitle=JavaScript+Standard+Moves+to+Yearly+Release+Schedule%3B+Here+is+What%27s+New+for+ES16&rft.date=2016-05-04&rft.aulast=Branscombe&rft.aufirst=Mary&rft_id=https%3A%2F%2Fthenewstack.io%2Fwhats-new-es2016%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://tc39.es/process-document/">"The TC39 Process"</a>. <i>tc39.es</i>. Ecma International<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-01-15</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=tc39.es&rft.atitle=The+TC39+Process&rft_id=https%3A%2F%2Ftc39.es%2Fprocess-document%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/tc39/proposals/blob/master/README.md">"ECMAScript proposals"</a>. TC39<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-01-15</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=ECMAScript+proposals&rft.pub=TC39&rft_id=https%3A%2F%2Fgithub.com%2Ftc39%2Fproposals%2Fblob%2Fmaster%2FREADME.md&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-transpilers-29"><span class="mw-cite-backlink">^ <a href="#cite_ref-transpilers_29-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-transpilers_29-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFAshkenas" class="citation web cs1"><a href="/wiki/Jeremy_Ashkenas" title="Jeremy Ashkenas">Ashkenas, Jeremy</a>. <a rel="nofollow" class="external text" href="https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS">"List of languages that compile to JS"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">February 6,</span> 2020</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=List+of+languages+that+compile+to+JS&rft.aulast=Ashkenas&rft.aufirst=Jeremy&rft_id=https%3A%2F%2Fgithub.com%2Fjashkenas%2Fcoffeescript%2Fwiki%2FList-of-languages-that-compile-to-JS&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=75026640">"U.S. Trademark Serial No. 75026640"</a>. USPTO.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=U.S.+Trademark+Serial+No.+75026640&rft.pub=USPTO&rft_id=http%3A%2F%2Ftarr.uspto.gov%2Fservlet%2Ftarr%3Fregser%3Dserial%26entry%3D75026640&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-31">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20100528154600/http://www.sun.com/suntrademarks/">"Sun Trademarks"</a>. Sun Microsystems. Archived from <a rel="nofollow" class="external text" href="http://www.sun.com/suntrademarks/">the original</a> on May 28, 2010<span class="reference-accessdate">. Retrieved <span class="nowrap">November 8,</span> 2007</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Sun+Trademarks&rft.pub=Sun+Microsystems&rft_id=http%3A%2F%2Fwww.sun.com%2Fsuntrademarks%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-lib_usage-32"><span class="mw-cite-backlink">^ <a href="#cite_ref-lib_usage_32-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-lib_usage_32-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-lib_usage_32-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://w3techs.com/technologies/overview/javascript_library">"Usage statistics of JavaScript libraries for websites"</a>. <i>w3techs.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=w3techs.com&rft.atitle=Usage+statistics+of+JavaScript+libraries+for+websites&rft_id=https%3A%2F%2Fw3techs.com%2Ftechnologies%2Foverview%2Fjavascript_library&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://vanilla-js.com/">"Vanilla JS"</a>. <i>vanilla-js.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">June 17,</span> 2020</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=vanilla-js.com&rft.atitle=Vanilla+JS&rft_id=http%3A%2F%2Fvanilla-js.com%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFNetscape_Communications_Corporation1998" class="citation web cs1">Netscape Communications Corporation (December 11, 1998). <a rel="nofollow" class="external text" href="http://docs.oracle.com/cd/E19957-01/816-6411-10/contents.htm">"Server-Side JavaScript Guide"</a>. <i>oracle.com</i>. Netscape Communications Corporation<span class="reference-accessdate">. Retrieved <span class="nowrap">July 16,</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=oracle.com&rft.atitle=Server-Side+JavaScript+Guide&rft.date=1998-12-11&rft.au=Netscape+Communications+Corporation&rft_id=http%3A%2F%2Fdocs.oracle.com%2Fcd%2FE19957-01%2F816-6411-10%2Fcontents.htm&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-35">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFClinick2000" class="citation web cs1">Clinick, Andrew (July 14, 2000). <a rel="nofollow" class="external text" href="https://msdn.microsoft.com/en-us/library/ms974588.aspx">"Introducing JScript .NET"</a>. <i>Microsoft Developer Network</i>. Microsoft<span class="reference-accessdate">. Retrieved <span class="nowrap">April 10,</span> 2018</span>. <q>[S]ince the 1996 introduction of JScript version 1.0 ... we've been seeing a steady increase in the usage of JScript on the server—particularly in Active Server Pages (ASP)</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Microsoft+Developer+Network&rft.atitle=Introducing+JScript+.NET&rft.date=2000-07-14&rft.aulast=Clinick&rft.aufirst=Andrew&rft_id=https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fms974588.aspx&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-2009server-36"><span class="mw-cite-backlink">^ <a href="#cite_ref-2009server_36-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-2009server_36-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFMahemoff,_Michael2009" class="citation web cs1">Mahemoff, Michael (December 17, 2009). <a rel="nofollow" class="external text" href="http://readwrite.com/2009/12/17/server-side_javascript_back_with_a_vengeance/">"Server-Side JavaScript, Back with a Vengeance"</a>. <i>readwrite.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">July 16,</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=readwrite.com&rft.atitle=Server-Side+JavaScript%2C+Back+with+a+Vengeance&rft.date=2009-12-17&rft.au=Mahemoff%2C+Michael&rft_id=http%3A%2F%2Freadwrite.com%2F2009%2F12%2F17%2Fserver-side_javascript_back_with_a_vengeance%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.adobe.com/devnet/acrobat/javascript.html">"JavaScript for Acrobat"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">August 18,</span> 2009</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=JavaScript+for+Acrobat&rft_id=https%3A%2F%2Fwww.adobe.com%2Fdevnet%2Facrobat%2Fjavascript.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://treitter.livejournal.com/14871.html">"Answering the question: "How do I develop an app for GNOME?<span class="cs1-kern-right">"</span>"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Answering+the+question%3A+%22How+do+I+develop+an+app+for+GNOME%3F%22&rft_id=http%3A%2F%2Ftreitter.livejournal.com%2F14871.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://tessel.io">"Tessel 2... Leverage all the libraries of Node.JS to create useful devices in minutes with Tessel"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Tessel+2...+Leverage+all+the+libraries+of+Node.JS+to+create+useful+devices+in+minutes+with+Tessel.&rft_id=http%3A%2F%2Ftessel.io&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.w3schools.com/nodejs/nodejs_raspberrypi_gpio_intro.asp">"Node.js Raspberry Pi GPIO Introduction"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Node.js+Raspberry+Pi+GPIO+Introduction&rft_id=https%3A%2F%2Fwww.w3schools.com%2Fnodejs%2Fnodejs_raspberrypi_gpio_intro.asp&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.espruino.com/">"Espruino - JavaScript for Microcontrollers"</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Espruino+-+JavaScript+for+Microcontrollers&rft_id=https%3A%2F%2Fwww.espruino.com%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-Flanagan2006-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-Flanagan2006_42-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFFlanagan2006" class="citation book cs1">Flanagan, David (August 17, 2006). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=2weL0iAfrEMC"><i>JavaScript: The Definitive Guide: The Definitive Guide</i></a>. "O'Reilly Media, Inc.". p. 16. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-596-55447-7" title="Special:BookSources/978-0-596-55447-7"><bdi>978-0-596-55447-7</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=JavaScript%3A+The+Definitive+Guide%3A+The+Definitive+Guide&rft.pages=16&rft.pub=%22O%27Reilly+Media%2C+Inc.%22&rft.date=2006-08-17&rft.isbn=978-0-596-55447-7&rft.aulast=Flanagan&rft.aufirst=David&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3D2weL0iAfrEMC&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-casting_rules-43"><span class="mw-cite-backlink">^ <a href="#cite_ref-casting_rules_43-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-casting_rules_43-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-casting_rules_43-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-casting_rules_43-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://dev.to/mkrl/javascript-quirks-in-one-image-from-the-internet-52m7">"JavaScript quirks in one image from the Internet"</a>. <i>The DEV Community</i><span class="reference-accessdate">. Retrieved <span class="nowrap">October 28,</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=The+DEV+Community&rft.atitle=JavaScript+quirks+in+one+image+from+the+Internet&rft_id=https%3A%2F%2Fdev.to%2Fmkrl%2Fjavascript-quirks-in-one-image-from-the-internet-52m7&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-44"><span class="mw-cite-backlink"><b><a href="#cite_ref-44">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.destroyallsoftware.com/talks/wat">"Wat"</a>. <i>www.destroyallsoftware.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">October 28,</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=www.destroyallsoftware.com&rft.atitle=Wat&rft_id=https%3A%2F%2Fwww.destroyallsoftware.com%2Ftalks%2Fwat&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-45"><span class="mw-cite-backlink"><b><a href="#cite_ref-45">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures">"JavaScript data types and data structures - JavaScript | MDN"</a>. <i>Developer.mozilla.org</i>. February 16, 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">February 24,</span> 2017</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Developer.mozilla.org&rft.atitle=JavaScript+data+types+and+data+structures+-+JavaScript+%26%23124%3B+MDN&rft.date=2017-02-16&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FJavaScript%2FData_structures&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-FOOTNOTEFlanagan2006176–178-46"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEFlanagan2006176–178_46-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFFlanagan2006">Flanagan 2006</a>, pp. 176–178.</span>
</li>
<li id="cite_note-47"><span class="mw-cite-backlink"><b><a href="#cite_ref-47">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFCrockford" class="citation web cs1">Crockford, Douglas. <a rel="nofollow" class="external text" href="http://javascript.crockford.com/prototypal.html">"Prototypal Inheritance in JavaScript"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">20 August</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Prototypal+Inheritance+in+JavaScript&rft.aulast=Crockford&rft.aufirst=Douglas&rft_id=http%3A%2F%2Fjavascript.crockford.com%2Fprototypal.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-48"><span class="mw-cite-backlink"><b><a href="#cite_ref-48">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain">"Inheritance and the prototype chain"</a>. <i>Mozilla Developer Network</i>. <a href="/wiki/Mozilla" title="Mozilla">Mozilla</a><span class="reference-accessdate">. Retrieved <span class="nowrap">April 6,</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Mozilla+Developer+Network&rft.atitle=Inheritance+and+the+prototype+chain&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FJavaScript%2FGuide%2FInheritance_and_the_prototype_chain&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-49"><span class="mw-cite-backlink"><b><a href="#cite_ref-49">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFHerman2013" class="citation book cs1">Herman, David (2013). <i>Effective JavaScript</i>. Addison-Wesley. p. 83. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-321-81218-6" title="Special:BookSources/978-0-321-81218-6"><bdi>978-0-321-81218-6</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Effective+JavaScript&rft.pages=83&rft.pub=Addison-Wesley&rft.date=2013&rft.isbn=978-0-321-81218-6&rft.aulast=Herman&rft.aufirst=David&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-50"><span class="mw-cite-backlink"><b><a href="#cite_ref-50">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFHaverbeke2011" class="citation book cs1">Haverbeke, Marijn (2011). <i>Eloquent JavaScript</i>. No Starch Press. pp. 95–97. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-59327-282-1" title="Special:BookSources/978-1-59327-282-1"><bdi>978-1-59327-282-1</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Eloquent+JavaScript&rft.pages=95-97&rft.pub=No+Starch+Press&rft.date=2011&rft.isbn=978-1-59327-282-1&rft.aulast=Haverbeke&rft.aufirst=Marijn&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-51"><span class="mw-cite-backlink"><b><a href="#cite_ref-51">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFKatz" class="citation web cs1">Katz, Yehuda. <a rel="nofollow" class="external text" href="http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/">"Understanding "Prototypes" in JavaScript"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">April 6,</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Understanding+%22Prototypes%22+in+JavaScript&rft.aulast=Katz&rft.aufirst=Yehuda&rft_id=http%3A%2F%2Fyehudakatz.com%2F2011%2F08%2F12%2Funderstanding-prototypes-in-javascript%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-52"><span class="mw-cite-backlink"><b><a href="#cite_ref-52">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFHerman2013" class="citation book cs1">Herman, David (2013). <i>Effective JavaScript</i>. Addison-Wesley. pp. 125–127. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-321-81218-6" title="Special:BookSources/978-0-321-81218-6"><bdi>978-0-321-81218-6</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Effective+JavaScript&rft.pages=125-127&rft.pub=Addison-Wesley&rft.date=2013&rft.isbn=978-0-321-81218-6&rft.aulast=Herman&rft.aufirst=David&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-53"><span class="mw-cite-backlink"><b><a href="#cite_ref-53">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://es5.github.com/#x15.3.4-toc">"Properties of the Function Object"</a>. Es5.github.com<span class="reference-accessdate">. Retrieved <span class="nowrap">May 26,</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Properties+of+the+Function+Object&rft.pub=Es5.github.com&rft_id=https%3A%2F%2Fes5.github.com%2F%23x15.3.4-toc&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-FOOTNOTEFlanagan2006141-54"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEFlanagan2006141_54-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFFlanagan2006">Flanagan 2006</a>, p. 141.</span>
</li>
<li id="cite_note-55"><span class="mw-cite-backlink"><b><a href="#cite_ref-55">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://peterseliger.blogspot.de/2014/04/the-many-talents-of-javascript.html#the-many-talents-of-javascript-for-generalizing-role-oriented-programming-approaches-like-traits-and-mixins">The many talents of JavaScript for generalizing Role-Oriented Programming approaches like Traits and Mixins</a>, Peterseliger.blogpsot.de, April 11, 2014.</span>
</li>
<li id="cite_note-56"><span class="mw-cite-backlink"><b><a href="#cite_ref-56">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://soft.vub.ac.be/~tvcutsem/traitsjs/">Traits for JavaScript</a>, 2010.</span>
</li>
<li id="cite_note-57"><span class="mw-cite-backlink"><b><a href="#cite_ref-57">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://cocktailjs.github.io/">"Home | CocktailJS"</a>. <i>Cocktailjs.github.io</i><span class="reference-accessdate">. Retrieved <span class="nowrap">February 24,</span> 2017</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Cocktailjs.github.io&rft.atitle=Home+%26%23124%3B+CocktailJS&rft_id=https%3A%2F%2Fcocktailjs.github.io%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-58"><span class="mw-cite-backlink"><b><a href="#cite_ref-58">^</a></b></span> <span class="reference-text">Angus Croll, <a rel="nofollow" class="external text" href="http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/">A fresh look at JavaScript Mixins</a>, published May 31, 2011.</span>
</li>
<li id="cite_note-59"><span class="mw-cite-backlink"><b><a href="#cite_ref-59">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop">"Concurrency model and Event Loop"</a>. <i>Mozilla Developer Network</i><span class="reference-accessdate">. Retrieved <span class="nowrap">August 28,</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Mozilla+Developer+Network&rft.atitle=Concurrency+model+and+Event+Loop&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FJavaScript%2FEventLoop&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-60"><span class="mw-cite-backlink"><b><a href="#cite_ref-60">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFHaverbeke2011" class="citation book cs1">Haverbeke, Marijn (2011). <i>Eloquent JavaScript</i>. No Starch Press. pp. 139–149. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-59327-282-1" title="Special:BookSources/978-1-59327-282-1"><bdi>978-1-59327-282-1</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Eloquent+JavaScript&rft.pages=139-149&rft.pub=No+Starch+Press&rft.date=2011&rft.isbn=978-1-59327-282-1&rft.aulast=Haverbeke&rft.aufirst=Marijn&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-61"><span class="mw-cite-backlink"><b><a href="#cite_ref-61">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Archive/Web/E4X">"E4X – Archive of obsolete content | MDN"</a>. <i>Mozilla Developer Network</i>. Mozilla Foundation. February 14, 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">July 13,</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Mozilla+Developer+Network&rft.atitle=E4X+%E2%80%93+Archive+of+obsolete+content+%26%23124%3B+MDN&rft.date=2014-02-14&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FArchive%2FWeb%2FE4X&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-62"><span class="mw-cite-backlink"><b><a href="#cite_ref-62">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/var">"var – JavaScript – MDN"</a>. The <a href="/wiki/Mozilla_Developer_Network" class="mw-redirect" title="Mozilla Developer Network">Mozilla Developer Network</a><span class="reference-accessdate">. Retrieved <span class="nowrap">December 22,</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=var+%E2%80%93+JavaScript+%E2%80%93+MDN&rft.pub=The+Mozilla+Developer+Network&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FJavaScript%2FReference%2FStatements%2Fvar&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-moz_let-63"><span class="mw-cite-backlink"><b><a href="#cite_ref-moz_let_63-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="moz_let" class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let">"let"</a>. <i>MDN web docs</i>. Mozilla<span class="reference-accessdate">. Retrieved <span class="nowrap">June 27,</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=MDN+web+docs&rft.atitle=let&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FStatements%2Flet&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-moz_const-64"><span class="mw-cite-backlink"><b><a href="#cite_ref-moz_const_64-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="moz_const" class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const">"const"</a>. <i>MDN web docs</i>. Mozilla<span class="reference-accessdate">. Retrieved <span class="nowrap">June 27,</span> 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=MDN+web+docs&rft.atitle=const&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FStatements%2Fconst&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-65"><span class="mw-cite-backlink"><b><a href="#cite_ref-65">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.ecma-international.org/ecma-262/5.1/#sec-4">"ECMAScript Language Specification – ECMA-262 Edition 5.1"</a>. <a href="/wiki/Ecma_International" title="Ecma International">Ecma International</a><span class="reference-accessdate">. Retrieved <span class="nowrap">December 22,</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=ECMAScript+Language+Specification+%E2%80%93+ECMA-262+Edition+5.1&rft.pub=Ecma+International&rft_id=http%3A%2F%2Fwww.ecma-international.org%2Fecma-262%2F5.1%2F%23sec-4&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-66"><span class="mw-cite-backlink"><b><a href="#cite_ref-66">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/DOM/console">"console"</a>. <i>Mozilla Developer Network</i>. <a href="/wiki/Mozilla" title="Mozilla">Mozilla</a><span class="reference-accessdate">. Retrieved <span class="nowrap">April 6,</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Mozilla+Developer+Network&rft.atitle=console&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FDOM%2Fconsole&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-67"><span class="mw-cite-backlink"><b><a href="#cite_ref-67">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments">"arguments"</a>. <i>Mozilla Developer Network</i>. <a href="/wiki/Mozilla" title="Mozilla">Mozilla</a><span class="reference-accessdate">. Retrieved <span class="nowrap">April 6,</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Mozilla+Developer+Network&rft.atitle=arguments&rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FJavaScript%2FReference%2FFunctions_and_function_scope%2Farguments&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-68"><span class="mw-cite-backlink"><b><a href="#cite_ref-68">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://learnersbucket.com/tutorials/es6/es6-modules/">"Import & Export Modules in javascript"</a>. <i>Learnersbucket.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">April 23,</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Learnersbucket.com&rft.atitle=Import+%26+Export+Modules+in+javascript&rft_id=https%3A%2F%2Flearnersbucket.com%2Ftutorials%2Fes6%2Fes6-modules%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-69"><span class="mw-cite-backlink"><b><a href="#cite_ref-69">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.adsafe.org/">"Making JavaScript Safe for Advertising"</a>. ADsafe<span class="reference-accessdate">. Retrieved <span class="nowrap">May 26,</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Making+JavaScript+Safe+for+Advertising&rft.pub=ADsafe&rft_id=http%3A%2F%2Fwww.adsafe.org%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-70"><span class="mw-cite-backlink"><b><a href="#cite_ref-70">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://code.google.com/p/es-lab/wiki/SecureEcmaScript">"Secure ECMA Script (SES)"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">May 26,</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Secure+ECMA+Script+%28SES%29&rft_id=https%3A%2F%2Fcode.google.com%2Fp%2Fes-lab%2Fwiki%2FSecureEcmaScript&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-71"><span class="mw-cite-backlink"><b><a href="#cite_ref-71">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.mozillazine.org/talkback.html?article=4392">"Mozilla Cross-Site Scripting Vulnerability Reported and Fixed - MozillaZine Talkback"</a>. <i>Mozillazine.org</i><span class="reference-accessdate">. Retrieved <span class="nowrap">February 24,</span> 2017</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Mozillazine.org&rft.atitle=Mozilla+Cross-Site+Scripting+Vulnerability+Reported+and+Fixed+-+MozillaZine+Talkback&rft_id=http%3A%2F%2Fwww.mozillazine.org%2Ftalkback.html%3Farticle%3D4392&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-72"><span class="mw-cite-backlink"><b><a href="#cite_ref-72">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation journal cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20110809195359/http://blog.anta.net/2008/06/17/right-click-%E2%80%9Cprotection%E2%80%9D-forget-about-it/">"Right-click "protection"? Forget about it"</a>. June 17, 2008. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="//www.worldcat.org/issn/1797-1993">1797-1993</a>. Archived from <a rel="nofollow" class="external text" href="http://blog.anta.net/2008/06/17/right-click-%e2%80%9cprotection%e2%80%9d-forget-about-it/">the original</a> on August 9, 2011<span class="reference-accessdate">. Retrieved <span class="nowrap">June 17,</span> 2008</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Right-click+%22protection%22%3F+Forget+about+it&rft.date=2008-06-17&rft.issn=1797-1993&rft_id=http%3A%2F%2Fblog.anta.net%2F2008%2F06%2F17%2Fright-click-%25e2%2580%259cprotection%25e2%2580%259d-forget-about-it%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span> <span class="cs1-hidden-error error citation-comment">Cite journal requires <code class="cs1-code">|journal=</code> (<a href="/wiki/Help:CS1_errors#missing_periodical" title="Help:CS1 errors">help</a>)</span></span>
</li>
<li id="cite_note-73"><span class="mw-cite-backlink"><b><a href="#cite_ref-73">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFRehorik" class="citation web cs1">Rehorik, Jan. <a rel="nofollow" class="external text" href="https://www.serviceobjects.com/blog/why-you-should-never-put-sensitive-data-in-your-javascript/">"Why You Should Never Put Sensitive Data in Your JavaScript"</a>. <i>ServiceObjects Blog</i>. ServiceObjects<span class="reference-accessdate">. Retrieved <span class="nowrap">June 3,</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=ServiceObjects+Blog&rft.atitle=Why+You+Should+Never+Put+Sensitive+Data+in+Your+JavaScript&rft.aulast=Rehorik&rft.aufirst=Jan&rft_id=https%3A%2F%2Fwww.serviceobjects.com%2Fblog%2Fwhy-you-should-never-put-sensitive-data-in-your-javascript%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-jslibs-74"><span class="mw-cite-backlink">^ <a href="#cite_ref-jslibs_74-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-jslibs_74-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text">
<link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFLauingerChaabaneArshadRobertson2016" class="citation book cs1">Lauinger, Tobias; Chaabane, Abdelberi; Arshad, Sajjad; Robertson, William; Wilson, Christo; Kirda, Engin (December 21, 2016). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170329045344/http://www.ccs.neu.edu/home/arshad/publications/ndss2017jslibs.pdf">"Thou Shalt Not Depend on Me: Analysing the Use of Outdated JavaScript Libraries on the Web"</a> <span class="cs1-format">(PDF)</span>. <i>Proceedings 2017 Network and Distributed System Security Symposium</i>. <a href="/wiki/ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="//arxiv.org/abs/1811.00918">1811.00918</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.14722%2Fndss.2017.23414">10.14722/ndss.2017.23414</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-891562-46-4" title="Special:BookSources/978-1-891562-46-4"><bdi>978-1-891562-46-4</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:17885720">17885720</a>. Archived from <a rel="nofollow" class="external text" href="http://www.ccs.neu.edu/home/arshad/publications/ndss2017jslibs.pdf">the original</a> <span class="cs1-format">(PDF)</span> on March 29, 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">February 22,</span> 2017</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Thou+Shalt+Not+Depend+on+Me%3A+Analysing+the+Use+of+Outdated+JavaScript+Libraries+on+the+Web&rft.btitle=Proceedings+2017+Network+and+Distributed+System+Security+Symposium&rft.date=2016-12-21&rft_id=info%3Aarxiv%2F1811.00918&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A17885720%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.14722%2Fndss.2017.23414&rft.isbn=978-1-891562-46-4&rft.aulast=Lauinger&rft.aufirst=Tobias&rft.au=Chaabane%2C+Abdelberi&rft.au=Arshad%2C+Sajjad&rft.au=Robertson%2C+William&rft.au=Wilson%2C+Christo&rft.au=Kirda%2C+Engin&rft_id=http%3A%2F%2Fwww.ccs.neu.edu%2Fhome%2Farshad%2Fpublications%2Fndss2017jslibs.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-75"><span class="mw-cite-backlink"><b><a href="#cite_ref-75">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFCollins2016" class="citation news cs1">Collins, Keith (March 27, 2016). <a rel="nofollow" class="external text" href="https://qz.com/646467/how-one-programmer-broke-the-internet-by-deleting-a-tiny-piece-of-code/">"How one programmer broke the internet by deleting a tiny piece of code"</a>. <i>Quartz</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Quartz&rft.atitle=How+one+programmer+broke+the+internet+by+deleting+a+tiny+piece+of+code&rft.date=2016-03-27&rft.aulast=Collins&rft.aufirst=Keith&rft_id=https%3A%2F%2Fqz.com%2F646467%2Fhow-one-programmer-broke-the-internet-by-deleting-a-tiny-piece-of-code%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-76"><span class="mw-cite-backlink"><b><a href="#cite_ref-76">^</a></b></span> <span class="reference-text">SC Magazine UK, <a rel="nofollow" class="external text" href="https://www.scmagazineuk.com/developers-11-lines-of-deleted-code-breaks-the-internet/article/532050/">Developer's 11 lines of deleted code 'breaks the internet'</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170223041434/https://www.scmagazineuk.com/developers-11-lines-of-deleted-code-breaks-the-internet/article/532050/">Archived</a> February 23, 2017, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-77"><span class="mw-cite-backlink"><b><a href="#cite_ref-77">^</a></b></span> <span class="reference-text">Mozilla Corporation, <a rel="nofollow" class="external text" href="https://www.mozilla.org/security/announce/2006/mfsa2006-38.html">Buffer overflow in crypto.signText()</a></span>
</li>
<li id="cite_note-78"><span class="mw-cite-backlink"><b><a href="#cite_ref-78">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFFesta1998" class="citation web cs1">Festa, Paul (August 19, 1998). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20021225190522/http://news.com.com/2100-1001-214620.html">"Buffer-overflow bug in IE"</a>. <i><a href="/wiki/CNET" title="CNET">CNET</a></i>. Archived from <a rel="nofollow" class="external text" href="http://news.com.com/2100-1001-214620.html">the original</a> on December 25, 2002.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=CNET&rft.atitle=Buffer-overflow+bug+in+IE&rft.date=1998-08-19&rft.aulast=Festa&rft.aufirst=Paul&rft_id=http%3A%2F%2Fnews.com.com%2F2100-1001-214620.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-79"><span class="mw-cite-backlink"><b><a href="#cite_ref-79">^</a></b></span> <span class="reference-text">SecurityTracker.com, <a rel="nofollow" class="external text" href="http://securitytracker.com/alerts/2006/Mar/1015713.html">Apple Safari JavaScript Buffer Overflow Lets Remote Users Execute Arbitrary Code and HTTP Redirect Bug Lets Remote Users Access Files</a></span>
</li>
<li id="cite_note-80"><span class="mw-cite-backlink"><b><a href="#cite_ref-80">^</a></b></span> <span class="reference-text">SecurityFocus, <a rel="nofollow" class="external text" href="http://www.securityfocus.com/bid/19030/info">Microsoft WebViewFolderIcon ActiveX Control Buffer Overflow Vulnerability</a></span>
</li>
<li id="cite_note-81"><span class="mw-cite-backlink"><b><a href="#cite_ref-81">^</a></b></span> <span class="reference-text">Fusion Authority, <a rel="nofollow" class="external text" href="http://www.fusionauthority.com/security/3234-macromedia-flash-activex-buffer-overflow.htm">Macromedia Flash ActiveX Buffer Overflow</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20110813160055/http://www.fusionauthority.com/security/3234-macromedia-flash-activex-buffer-overflow.htm">Archived</a> August 13, 2011, at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-82"><span class="mw-cite-backlink"><b><a href="#cite_ref-82">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://blogs.msdn.com/ie/archive/2006/02/09/528963.aspx">"Protected Mode in Vista IE7 – IEBlog"</a>. <i>Blogs.msdn.com</i>. February 9, 2006<span class="reference-accessdate">. Retrieved <span class="nowrap">February 24,</span> 2017</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Blogs.msdn.com&rft.atitle=Protected+Mode+in+Vista+IE7+%E2%80%93+IEBlog&rft.date=2006-02-09&rft_id=http%3A%2F%2Fblogs.msdn.com%2Fie%2Farchive%2F2006%2F02%2F09%2F528963.aspx&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-83"><span class="mw-cite-backlink"><b><a href="#cite_ref-83">^</a></b></span> <span class="reference-text">US CERT, <a rel="nofollow" class="external text" href="https://www.kb.cert.org/vuls/id/713878">Vulnerability Note VU#713878: Microsoft Internet Explorer does not properly validate source of redirected frame</a></span>
</li>
<li id="cite_note-84"><span class="mw-cite-backlink"><b><a href="#cite_ref-84">^</a></b></span> <span class="reference-text">Mozilla Foundation, <a rel="nofollow" class="external text" href="https://www.mozilla.org/security/announce/2005/mfsa2005-41.html">Mozilla Foundation Security Advisory 2005–41: Privilege escalation via DOM property overrides</a></span>
</li>
<li id="cite_note-85"><span class="mw-cite-backlink"><b><a href="#cite_ref-85">^</a></b></span> <span class="reference-text">Microsoft Corporation, <a rel="nofollow" class="external text" href="https://technet.microsoft.com/en-us/library/bb457150.aspx">Changes to Functionality in Microsoft Windows XP Service Pack 2: Part 5: Enhanced Browsing Security</a></span>
</li>
<li id="cite_note-86"><span class="mw-cite-backlink"><b><a href="#cite_ref-86">^</a></b></span> <span class="reference-text">For one example of a rare JavaScript Trojan Horse, see Symantec Corporation, <a rel="nofollow" class="external text" href="http://www.symantec.com/security_response/writeup.jsp?docid=2003-100111-0931-99">JS.Seeker.K</a></span>
</li>
<li id="cite_note-87"><span class="mw-cite-backlink"><b><a href="#cite_ref-87">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFGrussMauriceMangard2015" class="citation arxiv cs1">Gruss, Daniel; Maurice, Clémentine; Mangard, Stefan (July 24, 2015). "Rowhammer.js: A Remote Software-Induced Fault Attack in JavaScript". <a href="/wiki/ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="//arxiv.org/abs/1507.06955">1507.06955</a></span> [<a rel="nofollow" class="external text" href="//arxiv.org/archive/cs.CR">cs.CR</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Rowhammer.js%3A+A+Remote+Software-Induced+Fault+Attack+in+JavaScript&rft.date=2015-07-24&rft_id=info%3Aarxiv%2F1507.06955&rft.aulast=Gruss&rft.aufirst=Daniel&rft.au=Maurice%2C+Cl%C3%A9mentine&rft.au=Mangard%2C+Stefan&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-88"><span class="mw-cite-backlink"><b><a href="#cite_ref-88">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFJean-Pharuns2015" class="citation news cs1">Jean-Pharuns, Alix (July 30, 2015). <a rel="nofollow" class="external text" href="https://motherboard.vice.com/en_us/article/9akpwz/rowhammerjs-is-the-most-ingenious-hack-ive-ever-seen">"Rowhammer.js Is the Most Ingenious Hack I've Ever Seen"</a>. <i>Motherboard</i>. <a href="/wiki/Vice_(magazine)" title="Vice (magazine)">Vice</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Motherboard&rft.atitle=Rowhammer.js+Is+the+Most+Ingenious+Hack+I%27ve+Ever+Seen&rft.date=2015-07-30&rft.aulast=Jean-Pharuns&rft.aufirst=Alix&rft_id=https%3A%2F%2Fmotherboard.vice.com%2Fen_us%2Farticle%2F9akpwz%2Frowhammerjs-is-the-most-ingenious-hack-ive-ever-seen&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-89"><span class="mw-cite-backlink"><b><a href="#cite_ref-89">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFGoodin2015" class="citation web cs1">Goodin, Dan (August 4, 2015). <a rel="nofollow" class="external text" href="https://arstechnica.com/information-technology/2015/08/dram-bitflipping-exploit-for-attacking-pcs-just-add-javascript/">"DRAM 'Bitflipping' exploit for attacking PCs: Just add JavaScript"</a>. <i><a href="/wiki/Ars_Technica" title="Ars Technica">Ars Technica</a></i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Ars+Technica&rft.atitle=DRAM+%27Bitflipping%27+exploit+for+attacking+PCs%3A+Just+add+JavaScript&rft.date=2015-08-04&rft.aulast=Goodin&rft.aufirst=Dan&rft_id=https%3A%2F%2Farstechnica.com%2Finformation-technology%2F2015%2F08%2Fdram-bitflipping-exploit-for-attacking-pcs-just-add-javascript%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-90"><span class="mw-cite-backlink"><b><a href="#cite_ref-90">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFAuerbach2015" class="citation web cs1"><a href="/wiki/David_Auerbach" title="David Auerbach">Auerbach, David</a> (July 28, 2015). <a rel="nofollow" class="external text" href="http://www.slate.com/articles/technology/bitwise/2015/07/rowhammer_security_exploit_why_a_new_security_attack_is_truly_terrifying.html">"Rowhammer security exploit: Why a new security attack is truly terrifying"</a>. <i>slate.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">July 29,</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=slate.com&rft.atitle=Rowhammer+security+exploit%3A+Why+a+new+security+attack+is+truly+terrifying&rft.date=2015-07-28&rft.aulast=Auerbach&rft.aufirst=David&rft_id=http%3A%2F%2Fwww.slate.com%2Farticles%2Ftechnology%2Fbitwise%2F2015%2F07%2Frowhammer_security_exploit_why_a_new_security_attack_is_truly_terrifying.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-91"><span class="mw-cite-backlink"><b><a href="#cite_ref-91">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.vusec.net/projects/anc/">AnC</a> VUSec, 2017</span>
</li>
<li id="cite_note-92"><span class="mw-cite-backlink"><b><a href="#cite_ref-92">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://arstechnica.com/security/2017/02/new-aslr-busting-javascript-is-about-to-make-drive-by-exploits-much-nastier/">New ASLR-busting JavaScript is about to make drive-by exploits much nastier</a> Ars Technica, 2017</span>
</li>
<li id="cite_note-93"><span class="mw-cite-backlink"><b><a href="#cite_ref-93">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://spectreattack.com/spectre.pdf">Spectre Attack</a> Spectre Attack</span>
</li>
<li id="cite_note-94"><span class="mw-cite-backlink"><b><a href="#cite_ref-94">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://benchmarkjs.com/">"Benchmark.js"</a>. <i>benchmarkjs.com</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=benchmarkjs.com&rft.atitle=Benchmark.js&rft_id=https%3A%2F%2Fbenchmarkjs.com%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-auto1-95"><span class="mw-cite-backlink"><b><a href="#cite_ref-auto1_95-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFJSBEN.CH" class="citation web cs1">JSBEN.CH. <a rel="nofollow" class="external text" href="http://jsben.ch">"JSBEN.CH Performance Benchmarking Playground for JavaScript"</a>. <i>jsben.ch</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=jsben.ch&rft.atitle=JSBEN.CH+Performance+Benchmarking+Playground+for+JavaScript&rft.au=JSBEN.CH&rft_id=http%3A%2F%2Fjsben.ch&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-popularity-96"><span class="mw-cite-backlink"><b><a href="#cite_ref-popularity_96-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite id="CITEREFEich2008" class="citation web cs1"><a href="/wiki/Brendan_Eich" title="Brendan Eich">Eich, Brendan</a> (April 3, 2008). <a rel="nofollow" class="external text" href="http://brendaneich.com/2008/04/popularity/">"Popularity"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">January 19,</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Popularity&rft.date=2008-04-03&rft.aulast=Eich&rft.aufirst=Brendan&rft_id=http%3A%2F%2Fbrendaneich.com%2F2008%2F04%2Fpopularity%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-97"><span class="mw-cite-backlink"><b><a href="#cite_ref-97">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://visualstudiomagazine.com/articles/2017/11/06/edge-webassembly.aspx">"Edge Browser Switches WebAssembly to 'On' -- Visual Studio Magazine"</a>. <i>Visual Studio Magazine</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Visual+Studio+Magazine&rft.atitle=Edge+Browser+Switches+WebAssembly+to+%27On%27+--+Visual+Studio+Magazine&rft_id=https%3A%2F%2Fvisualstudiomagazine.com%2Farticles%2F2017%2F11%2F06%2Fedge-webassembly.aspx&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
<li id="cite_note-98"><span class="mw-cite-backlink"><b><a href="#cite_ref-98">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://asmjs.org/faq.html">"frequently asked questions"</a>. asm.js<span class="reference-accessdate">. Retrieved <span class="nowrap">April 13,</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=frequently+asked+questions&rft.pub=asm.js&rft_id=http%3A%2F%2Fasmjs.org%2Ffaq.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJavaScript" class="Z3988"></span></span>
</li>
</ol></div></div>
<h2><span class="mw-headline" id="Further_reading">Further reading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=38" title="Edit section: Further reading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/ECMAScript#External_links" title="ECMAScript">ECMAScript Specification Documents</a></div>
<ul><li><i>Eloquent JavaScript</i>; 3rd Ed; Marijn Haverbeke; No Starch Press; 472 pages; 2018; <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1593279509" title="Special:BookSources/978-1593279509">978-1593279509</a>.<small><a rel="nofollow" class="external text" href="https://eloquentjavascript.net/"><i>(download)</i></a></small></li>
<li><i>Principles of Object-Oriented JavaScript</i>; 1st Ed; Nicholas Zakas; No Starch Press; 120 pages; 2014; <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r999302996"/><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1593275402" title="Special:BookSources/978-1593275402">978-1593275402</a>.</li></ul>
<h2><span class="mw-headline" id="External_links">External links</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=JavaScript&action=edit&section=39" title="Edit section: External links">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div role="navigation" aria-labelledby="sister-projects" class="metadata plainlinks sistersitebox plainlist mbox-small" style="border:1px solid #aaa;padding:0;background:#f9f9f9"><div style="padding:0.75em 0;text-align:center"><b style="display:block">JavaScript</b>at Wikipedia's <a href="/wiki/Wikipedia:Wikimedia_sister_projects" title="Wikipedia:Wikimedia sister projects"><span id="sister-projects">sister projects</span></a></div><ul style="border-top:1px solid #aaa;padding:0.75em 0;width:217px;margin:0 auto"><li style="min-height:31px"><span style="display:inline-block;width:31px;line-height:31px;vertical-align:middle;text-align:center"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/0/06/Wiktionary-logo-v2.svg/27px-Wiktionary-logo-v2.svg.png" decoding="async" width="27" height="27" style="vertical-align: middle" srcset="//upload.wikimedia.org/wikipedia/en/thumb/0/06/Wiktionary-logo-v2.svg/41px-Wiktionary-logo-v2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/0/06/Wiktionary-logo-v2.svg/54px-Wiktionary-logo-v2.svg.png 2x" data-file-width="391" data-file-height="391" /></span><span style="display:inline-block;margin-left:4px;width:182px;vertical-align:middle"><a href="https://en.wiktionary.org/wiki/Special:Search/JavaScript" class="extiw" title="wikt:Special:Search/JavaScript">Definitions</a> from Wiktionary</span></li><li style="min-height:31px"><span style="display:inline-block;width:31px;line-height:31px;vertical-align:middle;text-align:center"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/20px-Commons-logo.svg.png" decoding="async" width="20" height="27" style="vertical-align: middle" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/40px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></span><span style="display:inline-block;margin-left:4px;width:182px;vertical-align:middle"><a href="https://commons.wikimedia.org/wiki/Category:JavaScript" class="extiw" title="c:Category:JavaScript">Media</a> from Wikimedia Commons</span></li><li style="min-height:31px"><span style="display:inline-block;width:31px;line-height:31px;vertical-align:middle;text-align:center"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/27px-Wikibooks-logo.svg.png" decoding="async" width="27" height="27" style="vertical-align: middle" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/41px-Wikibooks-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/54px-Wikibooks-logo.svg.png 2x" data-file-width="300" data-file-height="300" /></span><span style="display:inline-block;margin-left:4px;width:182px;vertical-align:middle"><a href="https://en.wikibooks.org/wiki/JavaScript" class="extiw" title="b:JavaScript">Textbooks</a> from Wikibooks</span></li><li style="min-height:31px"><span style="display:inline-block;width:31px;line-height:31px;vertical-align:middle;text-align:center"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/27px-Wikiversity_logo_2017.svg.png" decoding="async" width="27" height="22" style="vertical-align: middle" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/41px-Wikiversity_logo_2017.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Wikiversity_logo_2017.svg/54px-Wikiversity_logo_2017.svg.png 2x" data-file-width="626" data-file-height="512" /></span><span style="display:inline-block;margin-left:4px;width:182px;vertical-align:middle"><a href="https://en.wikiversity.org/wiki/Topic:JavaScript" class="extiw" title="v:Topic:JavaScript">Resources</a> from Wikiversity</span></li><li style="min-height:31px"><span style="display:inline-block;width:31px;line-height:31px;vertical-align:middle;text-align:center"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/bb/MediaWiki-notext.svg/27px-MediaWiki-notext.svg.png" decoding="async" width="27" height="21" style="vertical-align: middle" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/bb/MediaWiki-notext.svg/41px-MediaWiki-notext.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bb/MediaWiki-notext.svg/54px-MediaWiki-notext.svg.png 2x" data-file-width="685" data-file-height="530" /></span><span style="display:inline-block;margin-left:4px;width:182px;vertical-align:middle"><a href="https://www.mediawiki.org/wiki/JavaScript" class="extiw" title="mw:JavaScript">Documentation</a> from MediaWiki</span></li></ul></div>
<style data-mw-deduplicate="TemplateStyles:r1006640987">.mw-parser-output .spoken-wikipedia{border:1px solid #a2a9b1;background-color:#f8f9fa;margin:0.5em 0;padding:0.2em;line-height:1.5em;font-size:90%}.mw-parser-output .spoken-wikipedia-header{text-align:center}.mw-parser-output .spoken-wikipedia-listen-to{font-weight:bold}.mw-parser-output .spoken-wikipedia-files{text-align:center;margin-top:10px;margin-bottom:0.4em}.mw-parser-output .spoken-wikipedia-icon{float:left;margin-left:5px;margin-top:10px}.mw-parser-output .spoken-wikipedia-disclaimer{margin-left:60px;margin-top:10px;font-size:95%;line-height:1.6em}.mw-parser-output .spoken-wikipedia-footer{margin-top:10px;text-align:center}@media(min-width:720px){.mw-parser-output .spoken-wikipedia{width:20em;float:right;clear:right;margin-left:1em}}</style><div class="spoken-wikipedia sisterproject noprint haudio"><div class="spoken-wikipedia-header"><span class="spoken-wikipedia-listen-to">Listen to this article</span> (<span class="duration"><span class="min">48</span> minutes</span>)</div><div class="spoken-wikipedia-files"><div class="center"><div class="floatnone"><div class="mediaContainer" style="width:200px"><audio id="mwe_player_0" controls="" preload="none" style="width:200px" class="kskin" data-durationhint="2901.0953287982" data-startoffset="0" data-mwtitle="En-JavaScript.ogg" data-mwprovider="wikimediacommons"><source src="//upload.wikimedia.org/wikipedia/commons/4/4c/En-JavaScript.ogg" type="audio/ogg; codecs="vorbis"" data-title="Original Ogg file (67 kbps)" data-shorttitle="Ogg source" data-width="0" data-height="0" data-bandwidth="66662" /><source src="//upload.wikimedia.org/wikipedia/commons/transcoded/4/4c/En-JavaScript.ogg/En-JavaScript.ogg.mp3" type="audio/mpeg" data-title="MP3" data-shorttitle="MP3" data-transcodekey="mp3" data-width="0" data-height="0" data-bandwidth="121896" /></audio></div></div></div>
</div><div class="spoken-wikipedia-icon"><img alt="Spoken Wikipedia icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Sound-icon.svg/45px-Sound-icon.svg.png" decoding="async" title="Spoken Wikipedia" width="45" height="34" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/47/Sound-icon.svg/68px-Sound-icon.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/47/Sound-icon.svg/90px-Sound-icon.svg.png 2x" data-file-width="128" data-file-height="96" /></div><div class="spoken-wikipedia-disclaimer"><a href="/wiki/File:En-JavaScript.ogg" title="File:En-JavaScript.ogg">This audio file</a> was created from a revision of this article dated 20 August 2013<span style="display:none"> (<span class="bday dtstart published updated">2013-08-20</span>)</span>, and does not reflect subsequent edits.</div><div class="spoken-wikipedia-footer">(<a href="/wiki/Wikipedia:Media_help" class="mw-redirect" title="Wikipedia:Media help">Audio help</a> · <a href="/wiki/Wikipedia:Spoken_articles" title="Wikipedia:Spoken articles">More spoken articles</a>)</div></div>
<ul><li><a rel="nofollow" class="external text" href="https://curlie.org/Computers/Programming/Languages/JavaScript/">JavaScript</a> at <a href="/wiki/Curlie" class="mw-redirect" title="Curlie">Curlie</a></li>
<li><a href="/wiki/Douglas_Crockford" title="Douglas Crockford">Douglas Crockford</a>'s <a rel="nofollow" class="external text" href="https://www.youtube.com/playlist?list=PL62E185BB8577B63D">video lectures on JavaScript</a></li></ul>
<div role="navigation" class="navbox" aria-labelledby="JavaScript" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r992953826"/><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:JavaScript" title="Template:JavaScript"><abbr title="View this template" style=";;background:none transparent;border:none;box-shadow:none;padding:0;">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:JavaScript" title="Template talk:JavaScript"><abbr title="Discuss this template" style=";;background:none transparent;border:none;box-shadow:none;padding:0;">t</abbr></a></li><li class="nv-edit"><a class="external text" href="https://en.wikipedia.org/w/index.php?title=Template:JavaScript&action=edit"><abbr title="Edit this template" style=";;background:none transparent;border:none;box-shadow:none;padding:0;">e</abbr></a></li></ul></div><div id="JavaScript" style="font-size:114%;margin:0 4em"><a class="mw-selflink selflink">JavaScript</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Static_program_analysis" title="Static program analysis">Code analysis</a></th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/ESLint" title="ESLint">ESLint</a></li>
<li><a href="/wiki/JSHint" title="JSHint">JSHint</a></li>
<li><a href="/wiki/JSLint" title="JSLint">JSLint</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Subset" title="Subset">Supersets</a></th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/JS%2B%2B" title="JS++">JS++</a></li>
<li><a href="/wiki/Objective-J" title="Objective-J">Objective-J</a></li>
<li><a href="/wiki/TypeScript" title="TypeScript">TypeScript</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Source-to-source_compiler" title="Source-to-source compiler">Transpilers</a></th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Babel_(transcompiler)" title="Babel (transcompiler)">Babel.js</a></li>
<li><a href="/wiki/CoffeeScript" title="CoffeeScript">CoffeeScript</a></li>
<li><a href="/wiki/LiveScript" title="LiveScript">LiveScript</a></li>
<li><a href="/wiki/Dart_(programming_language)" title="Dart (programming language)">Dart</a></li>
<li><a href="/wiki/Emscripten" title="Emscripten">Emscripten</a></li>
<li><a href="/wiki/Google_Closure_Compiler" class="mw-redirect" title="Google Closure Compiler">Google Closure Compiler</a></li>
<li><a href="/wiki/Google_Web_Toolkit" title="Google Web Toolkit">Google Web Toolkit</a></li>
<li><a href="/wiki/Morfik" title="Morfik">Morfik</a></li>
<li><a href="/wiki/AtScript" title="AtScript">AtScript</a></li>
<li><a href="/wiki/Opa_(programming_language)" title="Opa (programming language)">Opa</a></li>
<li><a href="/wiki/Nim_(programming_language)" title="Nim (programming language)">Nim</a></li>
<li><a href="/wiki/Haxe" title="Haxe">Haxe</a></li>
<li><a href="/wiki/ClojureScript" class="mw-redirect" title="ClojureScript">ClojureScript</a></li>
<li><a href="/wiki/WebSharper" title="WebSharper">WebSharper</a></li>
<li><a href="/wiki/PureScript" title="PureScript">PureScript</a></li>
<li><a href="/wiki/Reason_(programming_language)" title="Reason (programming language)">Reason</a></li>
<li><a href="/wiki/Elm_(programming_language)" title="Elm (programming language)">Elm</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Client-side_JavaScript" class="mw-redirect" title="Client-side JavaScript">Client-side</a></li>
<li><a href="/wiki/JavaScript_library" title="JavaScript library">JavaScript library</a></li>
<li><a href="/wiki/JavaScript_syntax" title="JavaScript syntax">JavaScript syntax</a></li>
<li><a href="/wiki/Unobtrusive_JavaScript" title="Unobtrusive JavaScript">Unobtrusive JavaScript</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Debugger" title="Debugger">Debuggers</a></th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Firebug_(software)" title="Firebug (software)">Firebug</a></li>
<li><a href="/wiki/Komodo_IDE" title="Komodo IDE">Komodo IDE</a></li>
<li><a href="/wiki/Microsoft_Script_Debugger" title="Microsoft Script Debugger">Microsoft Script Debugger</a></li>
<li><a href="/wiki/Microsoft_Script_Editor" title="Microsoft Script Editor">Microsoft Script Editor</a></li>
<li><a href="/wiki/Opera_Dragonfly" title="Opera Dragonfly">Opera Dragonfly</a></li>
<li><a href="/wiki/Web_Inspector" class="mw-redirect" title="Web Inspector">Web Inspector</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Documentation_generator" title="Documentation generator">Doc generators</a></th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/JSDoc" title="JSDoc">JSDoc</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Editors (<span style="font-weight:normal"><a href="/wiki/Comparison_of_JavaScript-based_source_code_editors" title="Comparison of JavaScript-based source code editors">comparison</a></span>)</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Ace_(editor)" title="Ace (editor)">Ace</a>
<ul><li><a href="/wiki/Cloud9_IDE" title="Cloud9 IDE">Cloud9 IDE</a></li></ul></li>
<li><a href="/wiki/Atom_(text_editor)" title="Atom (text editor)">Atom</a></li>
<li><a href="/wiki/CodeMirror" title="CodeMirror">CodeMirror</a>
<ul><li><a href="/wiki/Light_Table_(software)" title="Light Table (software)">Light Table</a></li>
<li><a href="/wiki/Brackets_(text_editor)" title="Brackets (text editor)">Brackets</a></li></ul></li>
<li><a href="/wiki/PhpStorm" title="PhpStorm">PhpStorm</a></li>
<li><a href="/wiki/List_of_Eclipse_projects#Top-level_sub-projects" title="List of Eclipse projects">Orion</a></li>
<li><a href="/wiki/Microsoft_Visual_Studio" title="Microsoft Visual Studio">Visual Studio</a>
<ul><li><a href="/wiki/Microsoft_Visual_Studio_Express" title="Microsoft Visual Studio Express">Visual Studio Express</a></li></ul></li>
<li><a href="/wiki/Visual_Studio_Code" title="Visual Studio Code">Visual Studio Code</a></li>
<li><a href="/wiki/Microsoft_Visual_Studio#Team_Services" title="Microsoft Visual Studio">Visual Studio Team Services</a></li>
<li><a href="/wiki/Vim_(text_editor)" title="Vim (text editor)">Vim</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/JavaScript_engine" title="JavaScript engine">Engines</a></th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Comparison_of_JavaScript_engines" title="Comparison of JavaScript engines">Comparison of engines</a>
<ul><li><a href="/wiki/Comparison_of_JavaScript_engines_(DOM_support)" title="Comparison of JavaScript engines (DOM support)">DOM support</a></li></ul></li>
<li><a href="/wiki/List_of_ECMAScript_engines" title="List of ECMAScript engines">List of ECMAScript engines</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Software_framework" title="Software framework">Frameworks</a></th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Comparison_of_JavaScript_frameworks" title="Comparison of JavaScript frameworks">Comparison of JavaScript frameworks</a></li>
<li><a href="/wiki/List_of_JavaScript_libraries" title="List of JavaScript libraries">List of JavaScript libraries</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related <a href="/wiki/Technology" title="Technology">technologies</a></th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Cascading_Style_Sheets" class="mw-redirect" title="Cascading Style Sheets">Cascading Style Sheets</a></li>
<li><a href="/wiki/Document_Object_Model" title="Document Object Model">Document Object Model</a></li>
<li><a href="/wiki/HTML" title="HTML">HTML</a> (<a href="/wiki/HTML5" title="HTML5">HTML5</a>)</li>
<li><a href="/wiki/Ajax_(programming)" title="Ajax (programming)">Ajax</a></li>
<li><a href="/wiki/JSON" title="JSON">JSON</a></li>
<li><a href="/wiki/WebAssembly" title="WebAssembly">WebAssembly</a></li>
<li><a href="/wiki/WebAuthn" title="WebAuthn">WebAuthn</a></li>
<li><a href="/wiki/AssemblyScript" title="AssemblyScript">AssemblyScript</a></li>
<li><a href="/wiki/Asm.js" title="Asm.js">asm.js</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Package_manager" title="Package manager">Package managers</a></th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Npm_(software)" title="Npm (software)">npm</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Application Bundlers</th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Webpack" title="Webpack">Webpack</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Server-side_JavaScript" class="mw-redirect" title="Server-side JavaScript">Server-side</a></th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="/wiki/Active_Server_Pages" title="Active Server Pages">Active Server Pages</a></li>
<li><a href="/wiki/CommonJS" title="CommonJS">CommonJS</a></li>