无废话JavaScript教程(全集)第1/4页

《程序员》2008.09期有一篇名为《无废话ErLang》的文章,这让我想到了许多的诸如“无废话C”、“无废话书评”这类的文章,也想到了JavaScript可没有一篇“无废话”,所以决定开个篇来写这个。与这个决定相关的,还因为另一个缘故:许多读者认为我那本《JavaScript语言精髓与编程实践》读来辛苦,所以我一直想写个简单的读本。索性,这次就写个最简单的吧。

声明一下:如果只想看复杂的东西,不要读这篇文章了。
一、JavaScript最初其实是过程式的
追溯到1.0时代的JavaScript,其实是过程式的。它的基本特性有只有两项,一项是能够直接放在网页的HTML
标签中去接管事件,例如:


代码如下:

<input type="button" onclick="alert('hello')">

第二项则是支持一种简单的对象构造器(函数)。其实这个时代的构造器不如说是初始化函数更合适,它应当
这样写:


代码如下:

function MyObject() {
this.xxx = '...';
this.yyy = '...';
}
obj = new MyObject();

所以,早期的JavaScript无可置疑地背上了“基于对象的过程式脚本语言”的名头,这一点也不冤枉。除了
上面两项特性,JavaScript有着一些一般性的脚本语言的性质,例如:
 -整个.js文件一次性装载到执行环境(例如WEB浏览器)中,在经历一次语法分析之后,开始逐行执行;
 -在上述语法分析周期,(具名的)函数和用"var"声明的变量被预先处理在一个标识符表中,以便脚本代码使用;
 -从全局的代码行或函数调用开始执行,整个过程中执行不到的代码不被查错(除第一步中的语法检错外)。
也具有通常的过程式语言的性质,例如:
 -有if/for/while/switch等语句;
 -用function来声明函数,使用"(..)"来声明它的形式参数表,以及表示函数调用和传参;
 -类似于C语言的基本语法,包括使用"{..}"来表示代码块,以及使用"!="等运算符号;
 -一个类似于Java语言的对象操作运算符"."号,和属性、方法这样的基本概念。
好了,现在你看到了一个基本的JavaScript语言,它的代码只有象C一样的函数与语句行,支持非常简单的面
向对象编程。OK,这其实也差不多是JavaScript的全部……嗯……全部的语法基础观念。如果你用过一门哪怕
稍稍入门一点的程序语言,你都会觉得JavaScript其实挺简单的。
是啊,“写个函数,然后调用它”,就这么简单。例如:
function hi() {
alert('hello, world.');
}
hi();
二、稍微复杂一点的是数据类型
JavaScript有六种基本数据类型,分为两类。一类是值类型,即undefined,string, number和boolean;一类
是引用类型,即function和object。检测数据X是何种类型,可以简单地使用"typeof X"来返回一个字符串。
值类型与引用类型在其它高级语言中,是用“访问过程中是传值还是传引用”来区别的。简单说,在下面函数
中:
function foo(X) {
}
X传入的是值本身,还是一个指向该值的引用(你可以想象成指针),表明了X是何种类型。与其它语言不同的
是,JavaScript不在调用入口上加指示字来说明传值的方法,例如:
function foo(var X) {
// 一般高级语言中,var表明总是传入变量X的引用
}
而是,简单的由脚本引擎根据实际传入的X的数据类型来决定如何传值。例如:
function foo(X) {
...
}
foo('123'); // <- 字符串'123'值
foo(aObj); // <- aObj是一个对象引用
能这样处理的关键,在于JavaScript类型系统足够简洁。六种基本类型包括了三个哲学化的观念:能执行的
与不能执行的;对象或非对象;有(值)或无(值)。显然,理解这种哲学性的思想并不容易,因为更复杂一层
的、自包含的逻辑是:函数也是对象、值也是对象、无值也是值。
这就是JavaScript类型系统的全部了。如果你想简单的用用,那么你记住下面的就够了:
 -string、number、boolean三种简单值类型是用来传给网页显示的;
 -object用来存放其它的object、funtion或上述简单值类型,并用'.'运算通过一个属性名找到它们;
 -undefined是用来检测数据有效无效的;
 -function是用来执行的。
当然,如果你要成为思想家或者语言学的疯子,那么去思考上面的哲学化命题吧,我不拦着你。
三、能用鼻子想通的就是直接量了
或许很多人都搞不明白JavaScript中的直接量声明,然而它确实是非常简单的。既然我们大多数高级语言都
支持常量声明,甚至最原始的汇编语言也支持立即值——例如:
// in C
#define ABYTE 256
// in delphi
const
ABYTE = 256
; in asm
mov ah, 256

当前1/4页 1234下一页阅读全文

(0)

相关推荐

  • javascript教程:关于if简写语句优化的方法

    UglifyJS是一个对javascript进行压缩和美化的工具,在它的文档说明中,我看到了几种关于if语句优化的方法.尽管我还没使用它去做一些尝试性的测试,但从这里可以看到它的确对js作了美化的工作.也许有人认为if语句就那么简单,能优化到什么程度?但是看看以下的几种方式,你也许会改变看法. 一.使用常见的三元操作符 if (foo) bar(); else baz(); ==> foo?bar():baz();if (!foo) bar(); else baz(); ==> foo?baz

  • JavaScript入门教程(1) 什么是JS

    JavaScript 参考教程 本教程为未接触过 JavaScript 的读者提供了比较完善的初级知识,但只限于初级知识:所有与动态网页密切相关的 JavaScript 在本教程中都未提及,包括动态定位.动画.让文档接收更多事件(document.captureEvent())等;所有在 IE 及 Netscape 中有不同的 JavaScript 都尽少提及. 本教程在结构上设计的比较像一个参考(reference),有参考的规划性,但又有教程的性质,所以我把它叫做"参考教程". 本

  • JavaScript中的style.cssText使用教程

    很多人用过 style.color.style.display 等直接设置元素的样式属性,但是 style.cssText 用过的人就不多了. cssText 本质是什么? cssText 的本质就是设置 HTML 元素的 style 属性值. cssText 怎么用? 复制代码 代码如下: document.getElementById("d1").style.cssText = "color:red; font-size:13px;"; 看了这个示例后,相信不说

  • Eclipse配置Javascript开发环境图文教程

    首先需要安装Spket.这里就不细讲了. 之后进行JQuery的配置: 1. 从JQuery.com下载开发用的Javascript文件,如下图,一定要选择红框里面的选项. 2. 配置Eclipse里面的Spket Javascript Profiles,如下图: 1) 从window->Preferences...进去 2) 如上图选择Spket -> Javascript Profiles 3) 点击New...输入JQuery建立新的profile 4) 点击Add Library,并选

  • JavaScript插件化开发教程 (二)

    一,开篇分析 Hi,大家好!还记得前面的那篇文章吗------这个系列的开篇(JavaScript插件化开发教程一).主要讲述了以"jQuery的方式如何开发插件", 那么今天我们带着昨天的疑问来继续我们的插件开发之旅.之前的问题如下: (1),如果项目技术选型换了这些插件又是强依赖"jQuery"机制,我们以前写的插件将会不能用(假设不用jQuery的情况),如何做重构那? (2),重构插件的关键逻辑,我们将如何组织那? 好了,带着问题去学习今天的文章吧. 首先我

  • JavaScript插件化开发教程 (一)

    一,开篇分析 Hi,大家!今天这系列文章主要是说说如何开发基于"JavaScript"的插件式开发,我想很多人对"插件"这个词并不陌生, 有的人可能叫"组件"或"部件",这不重要,关键是看如何设计,如何做一个全方位的考量,这是本文的重点阐述的概念.我想大家对 "jQuery插件的方式"有一定的了解,我们结合这个话题一起讨论一下,最终给出相关的实现方案,来不断提高自己的谁能力. 二,进入插件正题 一般来说,j

  • JavaScript 核心参考教程 内置对象

    这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft).Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 1996 年开始,已经出现在所有的 Netscape 和 Microsoft 浏览器中.ECMA-262 的开发始于 1996 年,在 1997 年 7 月,ECMA 会员大会采纳了它的首个版本. 本系列教程旨在向大家分享本人当年学习Javascript的笔记和心得.本系列教程预计分五个部分. 第

  • JavaScript基础教程之alert弹出提示框实例

    alert 命令弹出一个提示框 为便于对 JavaScript 有一个直观的认识,本节会提供几个简单的实例供 JavaScript 入门学习之用.下面的代码是一个弹出提示框的例子: 复制代码 代码如下: <script type="text/javascript"> alert("我是提示文字!"); </script> 将上面部分代码,用文本编辑器(如写字板或其他更高级的编辑器,如 EditPlus 等)保存为 alert.html(或 a

  • JavaScript Break 和 Continue区别教程

    有两种可以用在循环中的声明:break和continue. JavaScript break 和 continue 声明 有两种特殊的声明可用在循环内部:break和continue. Break break命令可以终止循环的运行,然后继续执行循环之后的代码(如果循环之后有代码的话). 实例: var i=0 for (i=0;i [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 结果: The number is 0 The number is 1 The number is 2Co

  • Javascript WebSocket使用实例介绍(简明入门教程)

    一旦你了解了网络套接字与WEB服务器的连接,你将可以从浏览器发送数据到服务器并且可以接收由服务器返回的响应数据. 以下是创建一个新的WebSocket对象的API: 复制代码 代码如下: var Socket = new WebSocket(url, [protocal] ); 这里第一个参数是指要连接的URL,第二个参数是可选的,如果需要的话,则是指定一个的服务器支持的协议. WEB Socket属性: 属性 说明 Socket.readyState readyState的代表的ReadOnl

  • javascript入门教程基础篇

    一. 简介 1. 什么是javascript JavaScript 是网景(Netscape)公司开发的一种基于客户端浏览器.面向(基于)对象.事件驱动式的网页脚本语言. 2. 为什么要使用javascript 表单验证 网页特效 小游戏 Ajax 3.快速入门 在程序中,如果想编写js代码,有两种办法: 1)在html文件中,在一对script标记中,直接编写 <script language='javascript'> document.write('hello'); </scrip

  • Aptana调试javascript图解教程

    前提是安装 Firebug 插件 和aptanadebugger 插件,他们的下载地址如下:http://getfirebug.com/releases/firebug/1.2/firebug-1.2.0.xpihttp://firefox.aptana.com/update/aptanadebugger.xpi开始调试:选择你所需要的调试的html文件,右键点击"Debug As" 下的 "Debug..." ,其中左侧菜单中要选用 "Web Brows

随机推荐