Chinaunix首页 | 论坛 | 博客
  • 博客访问: 321466
  • 博文数量: 62
  • 博客积分: 2087
  • 博客等级: 大尉
  • 技术积分: 780
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-20 21:08
文章分类

全部博文(62)

文章存档

2009年(7)

2008年(55)

我的朋友

分类: 系统运维

2009-03-06 11:31:46

要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。前面说过,编程世界只有数据和代码两种基本元素,
而这两种元素又有着纠缠不清的关系。JavaScript 就是把数据和代码都简化到最原始的程度。
JavaScript 中的数据很简洁的。简单数据只有 undefined, null, boolean, number 和string 这五种,而复杂数据只有一种,即
object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。
JavaScript 中的代码只体现为一种形式,就是function。
注意:以上单词都是小写的,不要和Number, String, Object, Function 等JavaScript 内置函数混淆了。要知道,JavaScript
语言是区分大小写的呀!
任何一个JavaScript 的标识、常量、变量和参数都只是unfined, null, bool, number, string, object 和 function 类型中的一
种,也就typeof 返回值表明的类型。除此之外没有其他类型了。
 
...
function myfunc ()
{
alert("hello");
};
myfunc(); //这里调用myfunc,输出yeah 而不是hello
function myfunc ()
{
alert("yeah");
};
myfunc(); //这里调用myfunc,当然输出yeah
按理说,两个签名完全相同的函数,在其他编程语言中应该是非法的。但在JavaScript 中,这没错。不过,程序运行之后却发现一
个奇怪的现象:两次调用都只是最后那个函数里输出的值!显然第一个函数没有起到任何作用。这又是为什么呢?
原来,JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行中,定
义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。也就是说,在第一次调用myfunc 之前,
第一个函数语句定义的代码逻辑,已被第二个函数定义语句覆盖了。所以,两次都调用都是执行最后一个函数逻辑了。
如果把这个JavaScript 代码分成两段,例如将它们写在一个html 中,并用

这时,输出才是各自按顺序来的,也证明了JavaScript 的确是一段段地执行的。
 
...
 
详细内容见附件
文件: 悟透JavaScript.pdf
大小: 302KB
下载: 下载
阅读(2346) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~