JavaScript 简介

栏目: JavaScript · 发布时间: 5年前

内容简介:JavaScript 是一门多范式的动态语言,包含类型、运算符、标准的内置对象和方法。关于JavaScript 的设计思路,阮一峰老师是这么总结的:综合各家所长,发展出了一门

JavaScript 简介

一般来说,完整的JavaScript包括以下几个部分:

  • ECMAScript,描述了该语言的语法和基本对象;
  • 文档对象模型(DOM),描述处理网页内容的方法和接口;
  • 浏览器对象模型(BOM),描述与浏览器进行交互的方法和接口。

本文(系列)主要探讨ECMAScript的特性和应用,因为平时交流习惯用JavaScript,后面都用JavaScript代替,实际上JavaScript是ECMAScript标准的实现和扩展。

JavaScript 是一门多范式的动态语言,包含类型、运算符、标准的内置对象和方法。

关于JavaScript 的设计思路,阮一峰老师是这么总结的:

  1. 借鉴 C 语言的基本语法;
  2. 借鉴 Java 语言的数据类型和内存管理;
  3. 借鉴 Scheme 语言,将函数提升到"第一等公民"(first class)的地位;
  4. 借鉴 Self 语言,使用基于原型(prototype)的继承机制。

综合各家所长,发展出了一门 多范式的动态语言

  • 多范式:支持命令式编程(流程控制语句)、支持函数式编程(函数是一等公民)、支持面向对象编程(原型扩展);
  • 动态:

    var
    

JavaScript 发展历程

  • 1995年创建——Brendan Eich(Netscape工程师);
  • 1996年首次发布——在Netscape 2上,当时被称为 LiveScript ,因为和 sun 合作,搭上Java这个编程语言“热词”,重命名为“JavaScript”;
  • 1997年设立标准——ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262;
  • 1999年发布第3版;
  • 2009年发布第5版(ES5);
  • 2015年发布第6版(ES6/ES2015);
  • 2016年发布第7版(ES7/ES2016);
  • 2017年发布第7版(ES8/ES2017);
  • 2018年发布第7版(ES9/ES2018)。

多了个年份的叫法,不查资料都搞不清哪来这么多标准。更多请查阅 ecma-262 或者 维基百科-ECMAScript

JavaScript 语言特性

弱类型

JavaScript使用 varletconst 关键字来进行变量声明,除了 const 声明一个只读常量外,其他两种方式并不确定变量的类型:

var a=1
a={
    name:'jack'
}
a='lucy'

在Java强类型语言中必须这么写:

int a;
String b;

优点:

  1. 可以写出非常简洁的代码。

缺点:

  1. 写法随意,在没有良好编程规范的情况下写出来的可能是个雷区;
  2. 无法预检查。例如下面的函数,期望是数值,传入数值型字符串不会报错,返回的不是预期值从而导致bug:

    function add(a,b){
        return a+b;
    }
    //期望,return 3
    add(1,2)
    //bug,return '12'
    add('1',2)

弱类型的缺点容易导致bug,降低开发效率。开发建议:

  1. 变量声明表意清楚唯一;
  2. 写好JSDoc文档,函数的参数要求、返回值;
  3. 使用TypeScript等严格超集 阮一峰——强类型 JavaScript 的解决方案

对象属性任意扩展

强类型语言 对象结构在声明时已经确定好,添加字段需要修改声明,JavaScript 的对象声明简单,扩展容易,写起来更轻松自由。

var cat={};
cat.name='mimi';
cat.age=1;

优点:

  1. 写起来方便;
var list=[];
$.ajax({
    ...
    onSuccess(res){
        list=res.data;
    }
})

缺点:

  1. 不方便管理,使用不安全。

开发建议:

  1. 关键字段在声明时定义清楚;
  2. 不随意增删对象属性。

支持面向对象编程

JavaScript中一切都是对象。

// '1'
1['toString']()

而且对象的继承实现简单:

开发建议:

  1. 方式有很多种、使用prototype模式或者其他浅显易懂的方式来实现:
  function Cat(name,color){
    this.name = name;
    this.color = color;
  }

  Cat.prototype.type = "猫科动物";
  Cat.prototype.eat = function(){alert("吃老鼠")};

支持函数式编程

安利一个系列 JavaScript 函数式编程(一)——佯真愚

总结

  • JavaScript写法没有那么多的约束,入门简单;
  • JavaScript灵活支持多种开发范式,能够适应多种开发要求。

软件开发是给工程性的活动,需要遵循原则,保障代码易用性,可阅读性。合理的利用JavaScript的特性,通过约束和规范高效的进行软件开发。

参考链接

MDN: A re-introduction to JavaScript (JS tutorial)

阮一峰老师: Javascript诞生记

云栖社区: 《JavaScript核心概念及实践》——1.2 JavaScript语言特性

维基百科: JavaScriptECMAScript


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编译原理

编译原理

Alfred V. Aho、Monica S.Lam、Ravi Sethi、Jeffrey D. Ullman / 赵建华、郑滔、戴新宇 / 机械工业出版社 / 2008年12月 / 89.00元

本书全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在相关章节中给出大量的实例。与上一版相比,本书进行了全面的修订,涵盖了编译器开发方面的最新进展。每章中都提供了大量的系统及参考文献。 本书是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研......一起来看看 《编译原理》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具