历史

想了解它的诞生历史,点这个链接:http://www.ruanyifeng.com/blog/2011/06/birth_of_javascript.html, 会有详细介绍。

javascript内容概述

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

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

JavaScript的基本特点如下:

  • 是一种解释性脚本语言(代码不进行预编译)。
  • 主要用来向HTML页面添加交互行为
  • 可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。

JavaScript常用来完成以下任务:

  • 嵌入动态文本于HTML页面
  • 对浏览器事件作出响应
  • 读写HTML元素
  • 在数据被提交到服务器之前验证数据
  • 检测访客的浏览器信息
  • 控制cookies,包括创建和修改等。

    特性

    不同于服务器端脚本语言,例如PHPASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。而随着服务器变得强大,现在的程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖JavaScript在客户端进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动异步IO等特性,JavaScript逐渐被用来编写服务器端程序。且在近几年中,Node.js的出世,让JavaScript也具有了一定的服务器功能。

    设计缺陷

    不适合开发大型程序
    Javascript没有名称空间(namespace),很难模块化;没有如何将代码分布在多个文件的规范;允许同名函数的重复定义,后面的定义可以覆盖前面的定义,很不利于模块化加载。
    非常小的标准库
    Javascript提供的标准函数库非常小,只能完成一些基本操作,很多功能都不具备。
    null和undefined
    null属于对象(object)的一种,意思是该对象为空;undefined则是一种数据类型,表示未定义。如以下代码:
    1.   typeof null; // object
    2.   typeof undefined; // undefined
    可以看出两者含义不同,容易被混淆。 ```javascript   var foo;

  alert(foo == null); // true

  alert(foo == undefined); // true

  alert(foo === null); // false

  alert(foo === undefined); // true

  1. **全局变量难以控制** <br />Javascript的全局变量,在所有模块中都是可见的;任何一个函数内部都可以生成全局变量,这大大加剧了程序的复杂性。
  2. ```javascript
  3.   a = 1;
  4.   (function(){
  5.     b=2;
  6.     alert(a);
  7.   })(); // 1
  8.   alert(b); //2

==与===
==用来判断两个值是否相等。当两个值类型不同时,会发生自动转换,得到的结果非常不符合直觉。

  1.   "" == "0" // false
  2.   0 == "" // true
  3.   0 == "0" // true
  4.   false == "false" // false
  5.   false == "0" // true
  6.   false == undefined // false
  7.   false == null // false
  8.   null == undefined // true
  9.   " \t\r\n" == 0 // true

任何时侯都应使用”===”比较符更精确。

注:以上内容参考 维基百科 以及:http://www.ruanyifeng.com/blog/2011/06/10_design_defects_in_javascript.html