JavaScript 的成功得益于在正确的时间出现在正确的地点。JavaScript 的兴起与浏览器的支持息息相关。你瞧,VBScript 就没这么好运气。
JavaScript 很流行,但它有先天缺陷。Brendan Eich 当初只花了 10 天时间就把 JavaScript 设计出来了,作为 JavaScript 之父,BE 如是说。
引用
与其说我爱 JavaScript,不如说我恨它。它是 C 语言和 Self 语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:“它的优秀之处并非原创,它的原创之处并不优秀。”(摘选自阮一峰的翻译:JavaScript 诞生记)
JavaScript 的不足,最明显之处是语法。
糟糕冗长的语法
可选参数和默认值
function(a, b, option) {
option = option || {};
// ...
}
上面的代码中,option 是可选参数,当没有传递时,默认值是 {}. 然而,传递的 option 值有可能是假值(falsy 值)。严格来写,得如下判断:
function(a, b, option) {
option = arguments.length > 2 ? option : {};
// ...
}
注意:option = typeof option !== 'undefined' ? option : {} 也有可能是错误的,因为传递过来的可能就是 undefined.
当不需要 b 参数,删除后,基于 arguments.length 的判断很容易导致忘记修改而出错:
function(a, option) {
option = arguments.length > 2 ? option : {};
// ...
}
如果能增加以下语法该多好呀:
function(a, b, option = {}) {
// ...
}
Let
闭包很强大,也很恼火:
上面的代码经常在面试题中出现,解决办法是再包裹一层:
如果直接支持 let 语法该多好呀:
模块
模块模式是一种无奈的选择:
var event = (function() {
// private variables
var listeners = [];
function addEventListener(f) {
listeners.push(f);
}
function clearEventListeners() {
listeners = [];
}
// ...
// export the module's API
return {
addEventListener: addEventListener,
clearEventListeners: clearEventListeners
// ...
};
}());
如果原生支持该多好呀:
继承
JavaScript 要通过原型链来实现继承:
如果能写成下面这样该多好呀:
分享到:
相关推荐
标题 "JavaScript做简单计算生存小时" 指的是利用JavaScript编程语言从用户的身份证号码中提取出生日期,并计算出用户从出生至今已经生存的小时数。这个过程涉及到JavaScript的基础语法、字符串操作、日期处理以及...
"GoLJS:JavaScript 生命游戏"是一个基于JavaScript实现的经典计算机科学模拟游戏——康威的生命游戏(Conway's Game of Life)。这个项目旨在用JavaScript编程语言为用户呈现一个交互式的、实时渲染的生命游戏界面。...
这个模拟系统由二维网格上的细胞构成,每个细胞有生与死两种状态。游戏的规则基于细胞周围邻居的状态来决定其下一时刻的状态,这四个基本规则定义了生命游戏的全部逻辑: 1. **孤立**:如果一个细胞周围没有活细胞...
Model层负责与服务器进行数据交互,View层负责界面展示,Controller层处理用户的输入并调用Model层的方法。此外,前端可能使用了HTML、CSS和JavaScript技术,通过AJAX实现页面无刷新的异步更新。 在实现过程中,...
康威的人生游戏生命游戏的宇宙是一个无限的二维正交方格网格,每个方格都处于两种可能的状态之一,生或死。 每个单元格与其八个相邻单元格相互作用,这些单元格是水平、垂直或对角相邻的单元格。 在时间的每一步,...
在这个项目中,JavaScript主要用于处理用户交互、更新游戏状态以及与WebAssembly模块通信。它提供了一个灵活的运行环境,能够动态地操作DOM(文档对象模型)和处理事件。 WebAssembly是一种低级字节码格式,设计...
在JavaScript环境中实现生命游戏,我们可以称之为“杰斯戈尔”,它提供了一个直观的平台,让任何人都可以轻松地观察和实验这种混沌与秩序并存的现象。 首先,让我们理解生命游戏的基本规则: 1. **出生**:如果一...
五、扩展与优化 1. 控制面板:添加用户界面,允许用户控制游戏速度,更改网格尺寸,甚至输入自定义初始状态。 2. 性能优化:对于大网格,可以考虑使用WebGL或Canvas进行渲染,以提高性能。 3. 复杂模式:探索不同...
JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器环境中运行,用于处理用户交互、操作DOM(文档对象模型)以及与服务器进行数据交换。在js-life项目中,JavaScript是实现游戏逻辑的主要工具。 2. **康威...
标题“gol.js:javascript中简单(未完成)的生活游戏”指的是一个使用JavaScript编写的、基于康威生命游戏(Conway's Game of Life)的项目。康威生命游戏,通常简称为生命游戏,是由数学家约翰·康威在1970年提出的...
《学生宿舍管理系统——基于ASP.NET技术的实现与详解》 学生宿舍管理系统是高校信息化建设的重要组成部分,它旨在提高宿舍管理的效率,优化资源配置,保障学生的生活秩序。本系统采用先进的ASP.NET技术进行开发,...
在这个游戏里,二维网格中的每个单元格(细胞)可以是生或死的状态,通过与周围细胞的相互作用来决定其下一代的状态。这种简单的设定却能够产生出令人惊叹的复杂模式。 在JavaScript中实现《生命游戏》通常涉及以下...
《生命游戏:JavaScript实现的艺术与科学》 生命游戏,全称为康威生命游戏(Conway's Game of Life),是英国数学家约翰·何顿·康威于1970年提出的一种细胞自动机模型,它以简洁的规则揭示了复杂行为的涌现。在这...
它允许开发者动态地更新内容、处理用户输入、创建动画效果以及与服务器进行交互。在《生命游戏》的实现中,JavaScript负责计算每个细胞的状态变化,根据细胞的邻居状态进行更新,并将结果展示在HTML5画布上。 HTML5...
在这个游戏中,二维平面上的每个格子代表一个细胞,根据一定的规则,细胞在下一代是生还是死。这个简单的系统能展现出极其复杂的动态行为,甚至可以模拟出计算能力。 在给定的项目"GameOfLife: Conway的《人生游戏...
3. **死亡**:其他情况下,无论是活细胞还是死细胞,都将变为死细胞。这包括活细胞周围的活细胞数量少于2个或多于3个的情况。 JavaScript代码会创建一个二维数组来表示细胞状态,然后根据上述规则进行迭代更新。...
JavaScript与canvas交互的核心是`CanvasRenderingContext2D`对象,它提供了各种绘图方法和属性。在这个粒子系统中,我们将用到`clearRect()`清除画布,`fillStyle`和`strokeStyle`设置填充和描边颜色,`save()`和`...
每个数组元素代表一个单元格,可以存储其状态(生或死)。然后,我们需要编写一个函数来计算每个单元格的新状态,这通常涉及到遍历整个网格并检查每个单元格的邻居数量。在康威的规则中,如果一个活细胞有2个或3个活...
1. **考试形式单一**:传统的考核方式往往采用期末一次性笔试的形式,这种方式虽然能够检验学生对基础知识的掌握情况,但容易导致学生采取死记硬背的方式应对考试,忽略了对学生实际应用能力及创新能力的培养。...
进行中的Javascript游戏 团队(DiJitech) ? 角色? DJ-团队负责人/游戏程序员Joe-市场营销主管-网站/游戏后端工程师? 陆克文-? Kiara-艺术 扩展文章/市场营销 沙门 布赖恩 比赛-玩家打开了另一个充满动作的无尽...