rendan Eich 在 1995 年创造了 JavaScript,这门语言的设计是一个“大杂烩”,融合了多种编程语言的元素和思想。这种多源性使 JavaScript 具备了灵活性和多样性。下面详细说明这几个主要来源及其对 JavaScript 的影响:
### 1. 基本语法:借鉴 C 语言和 Java 语言
- **C 语言**:JavaScript 的许多基本语法来自 C 语言,包括大括号 `{}` 用于代码块、控制结构(如 `if`、`for`、`while`)、表达式语法及运算符等。这使得开发者可以更容易上手,因为 C 语言影响了很多其他编程语言。
- **Java 语言**:JavaScript 的一些面向对象的特性和命名习惯(如 `class`、`extends` 等)在后来的版本中也受到了 Java 的影响,虽然在早期版本中并不明显。
### 2. 数据结构:借鉴 Java 语言
- **原始值和对象**:JavaScript 借鉴了 Java 的概念,将数据分为原始值(如 `number`, `string`, `boolean`, `null`, `undefined`, `symbol`)和对象。这种分类帮助开发者更好地理解和管理数据。
### 3. 函数的用法:借鉴 Scheme 语言和 Awk 语言
- **Scheme 语言**:JavaScript 将函数视为第一等公民(first-class citizens),这意味着函数可以存储在变量中、作为参数传递以及作为返回值。这种特性来自函数式编程语言 Scheme。
- **Awk 语言**:闭包(closure)的概念也是 JavaScript 的重要特性之一,允许函数捕获并记住其词法作用域中的变量。Awk 语言中的函数处理方式也对这一特性有一定的影响。
### 4. 原型继承模型:借鉴 Self 语言
- **Self 语言**:JavaScript 的原型继承模型不同于传统的类继承(如 C++ 或 Java)。在 JavaScript 中,对象可以直接从其他对象继承属性和方法,这种机制是受 Self 语言启发的。Self 是 Smalltalk 的一种变种,强调对象直接从其他对象继承特性。
### 5. 正则表达式:借鉴 Perl 语言
- **Perl 语言**:JavaScript 的正则表达式语法和功能强烈借鉴了 Perl,Perl 是以强大的文本处理能力著称的编程语言。这使得 JavaScript 在字符串操作和文本匹配方面非常强大。
### 6. 字符串和数组处理:借鉴 Python 语言
- **Python 语言**:JavaScript 中的字符串和数组处理方法(如 `split`、`join`、`slice`、`map`、`filter` 等)在设计上受到了 Python 的影响,提供了简洁而强大的数据处理能力。
通过融合这些语言的特性,JavaScript 成为了一个灵活多变、易于学习和使用的编程语言,并随着时间的推移不断演进,成为现代 Web 开发的核心技术之一。
我的文章可能还有不足之处,如有不同意见,请留言讨论。
romise是js中类似string,arry ,object,function,boolean等的一个类型,是一个特殊的 JavaScript 对象。
Promise是一种异步编程的解决方案,用于处理异步操作并返回结果。主要作用是解决回调函数嵌套(回调地狱)的问题,使异步操作更加清晰、易于理解和维护。
官方给出的例子:关于回调嵌套
用promise解决:
关于回调嵌套这个例子虽然简单明了,但是没有太多实际应用意义。实际项目开发过程中可以通过合理的设计避免这种嵌套。
又想了想,究竟什么场景下会是这种回调嵌套呢,又要求这种场景通俗易懂,很合理。
想了想,构思了个如下的例子。
1、老师让你去宿舍找某某同学,跟他说下午到办公室来一趟。对于办事负责任的你来说,找到某某同学后要给老师回复一句“找到他了,下来能来”,或者“他不在,已跟他宿舍的人说了”。(回调1)
2、你来到宿舍,发现某某同学不在,有个大神在宿舍玩游戏。负责任的你必须把话带到,于是你对大神说话。大神正在忙着王者荣耀,正在紧要关头,手忙脚乱的飞快操作着手机,对你吼了一句“稍等!容我玩完这一局!”,你只好看着大神玩,等待玩完。(嵌套回调2,等大神有空)
3、此时,宿舍中的wifi出现问题,加之大神的手机不是“遥遥领先”,大神的游戏卡住了,大神无奈只能飙出一句国骂,然后无奈的等游戏恢复正常(嵌套回调3,等不卡)
4、经过XX秒,大神手机恢复正常(嵌套回调3完成),大神终于finish了这一局。(嵌套回调2完成)
5、大神抬起带着血丝的眼睛,对你投来微笑。你赶紧对他说了事,大神满口答应。你匆匆回到办公室,回复老师。(回调1,终于完成)。
用两个空格来代替制表符(tab) 2.嵌套元素应当缩进一次(即两个空格)。 3.对于属性的定义,确保全部使用双引号,绝不要使用单引号。 4.不要省略可选的结束标签(例如,</li> 或 </body>)。
每个页面都添加<meta>标签,从而通知 IE 采用其所支持的最新的模式。 <meta http-equiv="X-UA-Compatible" content="IE=Edge">
每个页面都添加<meta>标签,从而全部与文档编码一致(一般采用 UTF-8 编码)。 <meta charset="UTF-8">
根据 HTML5 规范,在引入 CSS 和 JavaScript 文件时一般不需要指定 type属性,因为 text/css 和 text/javascript 分别是它们的默认值。
HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性。
例子:
布尔型属性可以在声明时不赋值。XHTML 规范要求为其赋值,但是 HTML5 规范不需要。 简单来说,就是不用赋值。 例子:
编写 HTML 代码时,尽量避免多余的父元素。很多时候,这需要迭代和重构来实现。请看下面的案例:
*请认真填写需求信息,我们会在24小时内与您取得联系。