`
netxdiy
  • 浏览: 673707 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript进阶之变量篇

 
阅读更多

仔细的看了看<javascript权威指南>,算笔记吧
1、关于变量的声名
大家都知道javascript是可以隐式声名变量的。但要注意,隐式声名变量总是被创建为全局变量。看以下代码,情愿javascript语言强制声明变量。建议大家一定要var声明变量。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. functiontest(){
  3. vara=222;
  4. document.writeln(a);
  5. }
  6. test();
  7. document.writeln(a);
  8. </SCRIPT>
<script type="text/javascript">render_code();</script>

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. functiontest(){
  3. a=222;
  4. document.writeln(a);
  5. }
  6. test();
  7. document.writeln(a);
  8. </SCRIPT>
<script type="text/javascript">render_code();</script>2、关于变量的作用域
猜猜以下代码输出什么。
代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. varx='000';
  3. document.writeln(x);
  4. a();
  5. functiona(){
  6. varx='aaa';
  7. functionb(){
  8. document.writeln(x);
  9. varx='bbb';
  10. document.writeln(x);
  11. }
  12. b();
  13. document.writeln(x);
  14. }
  15. </SCRIPT>
<script type="text/javascript">render_code();</script>
如果你的答案是 000 undefined bbb aaa。恭喜,ok.当代码用到x变量时,先从函数块(权威指南中用调用对象来解释)中找,如果找不到,从上一级函数块找,直到找到,如果知道顶层代码(指var x='000';的位置)还没找到定义,代码会报未定义错误。

改一下代码,得到 000 undefined 111 111

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. varx='000';
  3. document.writeln(x);
  4. a();
  5. functiona(){
  6. functionb(){
  7. document.writeln(x);
  8. document.writeln(x);
  9. }
  10. document.writeln(x);
  11. varx='111';
  12. b();
  13. }
  14. </SCRIPT>
<script type="text/javascript">render_code();</script>
3、新的问题
变量个作用域清楚了,注意上面的代码。为什么我的function a()定义以前就可以调用a函数了,而我的var x='111';前“不可以用”x啊???
让我把我的理解一一道来
首先:以下代码让我相信javascript有个预编译过程,不是完全按照顺序解释执行的。
代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. a();
  3. functiona(){
  4. alert();
  5. }
  6. </SCRIPT>
<script type="text/javascript">render_code();</script>
个人理解这个预编译过程不会象java/c#那样把代码编译成虚拟机认识的语言,更不会象vb,vc那样编译成更底层的语言。猜想只是把这个函数预装载到这段函数执行的全局环境中,在这个执行环境中,该函数被标识定义过,可以直接使用了。(看到网上很多人写的AOP的javascript实现,其实这个预编译过程才是翻译元数据最佳时候,可惜就javascript语言来讲,是有些落伍了)

这个文章主要讲变量的一些问题。变量说了,为什么函数可以,我变量就不可以呢。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. document.writeln(a);
  3. vara=0;
  4. </SCRIPT>
<script type="text/javascript">render_code();</script>
为什么我要输出undefined呢?为什么我a就不可以预编译一把呢?
大家看看以下两段代码会输出什么呢啊???
代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. document.writeln(a);
  3. a=0;
  4. </SCRIPT>
<script type="text/javascript">render_code();</script>

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. document.writeln(a);
  3. </SCRIPT>
<script type="text/javascript">render_code();</script>

可能你运行试了,可能你本来就知道,a未定义。哈哈哈,好了。
现在我确信var a=0;被javascript解释器“预编译过”,至少是记录下来了。甚至把它的值设置为 undefined。“undefined”这个词名字取的很是让人误解,怎么能叫未定义呢,分明是javascript中所有变量的初始化值。关于null与undefined的比较我实在不愿提了。
注意上面两段代码还反映一个现象。隐式声明的变量是在解释的时候才把自己定义为全局变量的。

关于函数与变量javascript预编译的不同处理,大家可以与java class的加载过程比较下。java也是对基本类型设出值,对象为null的。(不往远扯了)
4、区别未定义变量和未附值变量

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. vara;
  3. document.writeln(a);
  4. </SCRIPT>
<script type="text/javascript">render_code();</script>

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. document.writeln(a);
  3. </SCRIPT>
<script type="text/javascript">render_code();</script>
未定义变量和未附值变量 权威指南中文版 定义的。通过第三条分析,我觉得变量就应该以 定义和未定义变量区别。未附值变量和undefined有点冲突,javascript不是强类型语言,没发附默认值,才来了个undefined。
5、基本类型和引用类型
熟悉java的朋友可能这部分很清楚。没啥
说头。
6、javascript的垃圾回收
关于这部分内容一直没见着个权威说法。在javascript权威指南中有两小节提到这个问题。
对于字符串、对象、数据这些没有固定大小,必须为它们动态的分配内存,但什么时候回收这些内存呢?javascript使用和java一样的garbage collection的方法。
代码
  1. vars="hello";
  2. varu=s.toUpperCase();
  3. s=u;
<script type="text/javascript">render_code();</script>
运行这段代码后,"hello"没有变量会再用到他,这是"hello"的存储空间的被垃圾回收了。对于javascript的垃圾回收,你唯一要关心的是,它一定会进行,不要对内存担心。
注意,javascript不提供任何的强制垃圾回收或释放内存的运算附或语句。
javascript的delete运算附和C++中的不同。
代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. varo=newObject();
  3. o.name="zkj";
  4. o.age=25;
  5. o.bir=newDate();
  6. for(varkeyino){
  7. document.writeln(key+':'+o[key]+'</br>');
  8. }
  9. document.writeln('deleteo.bir</br>');
  10. deleteo.bir;
  11. for(varkeyino){
  12. document.writeln(key+':'+o[key]+'</br>');
  13. }
  14. </SCRIPT>
<script type="text/javascript">render_code();</script>

7、作为属性的变量
猜猜以下代码会输出什么。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. varx=100;
  3. document.writeln(x);
  4. add(x);
  5. document.writeln('</br>------------------------</br>');
  6. varx=200;
  7. document.writeln(x);
  8. add(x);
  9. functionadd(x){
  10. document.writeln(x);
  11. varx=300;
  12. document.writeln(x);
  13. varx=400;
  14. document.writeln(x);
  15. }
  16. </SCRIPT>
<script type="text/javascript">render_code();</script>

估计很多人能得出正确答案
100 100 300 400
------------------------
200 200 300 400
但这里我想引入 全局对象和调用对象的 概念(javascript权威指南是这么翻译滴)

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. varx=100;//我们在全局对象中加了个属性x.对比
  3. //varo=newObject();o.x=100;
  4. document.writeln(this.x);//用this访问全局对象
  5. add(this.x);//把全局对象的属性值传递对函数中
  6. document.writeln('</br>------------------------</br>');
  7. this.x=200;//把全局变量中的x属性修改掉
  8. document.writeln(window.x);
  9. add(window.x);
  10. functionadd(x){
  11. //假设有个局部对象,调用对象,函数调用过程中的对象
  12. //temptemp.x=${传入的值}
  13. document.writeln(x);//哦这打印的可是参数中的值,也就是temp.x=this.x
  14. //的值,
  15. varx=300;//把调用对象变量的签名给覆盖了.
  16. document.writeln(x);//打印修改过的值。temp.x
  17. varx=400;//temp.x=400
  18. document.writeln(x);
  19. }
  20. </SCRIPT>
<script type="text/javascript">render_code();</script>

在函数的调用过程中,假设有个调用对象存在,把函数的参数,和函数内的临时变量当成这个调用对象的属性。当然这个调用对象的生命周期很短。
注意,当我们访问全局变量的属性入x的时候,不必要用this.x 或window.x访问,当在有<frame><iframe>的页面时会出现混淆。
关于函数的详细讨论我后续会详细讨论。

评论 共 12 条 发表评论
hongliang 2006-03-30 16:58

代码
  1. functionfoo(){
  2. functionbar(){}
  3. bar();
  4. }
  5. foo();
  6. foo();
  7. foo();
  8. //...
<script type="text/javascript">render_code();</script>

我想知道一共会有多少个bar函数对象产生。。。

zkj_beyond 2006-04-06 09:27

在javascript中,function作为一个关键字有两方面的应用。
a、可以定义函数。
b、可以定义一个数据类型。这里只介绍函数。关于function定义类的功能在对象中介绍。
1、函数的概念
javascript中提供了许多预定义函数,我们可以直接使用,比如Math.sin();eval()等。
我们也可以定义自己的函数。有以下四种方法:

代码
  1. a、functionadd(x,y){returnx+y;}
  2. b、varadd=function(x,y){returnx+y;}
  3. c、varadd=newFunction("x","y","returnx+y;");
  4. d、varadd=functiona(x,y){returnx+y;}
<script type="text/javascript">render_code();</script>

在这,如果用add(2,3);调用,返回的结果都是5。但它们使用有很大的区别,后面在详细解释。

2、函数的参数
回想上一篇提到函数的调用对象。虽然我们不能访问它,看不见,但引入这个概念确实可以方便我们解释很多东西。
在一个函数体内,标识符arguments有特殊含义。它是调用对象的一个特殊属性。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. functionadd(x,y){
  3. document.writeln('x='+x);
  4. document.writeln('y='+y);
  5. document.writeln('arguments[0]='+arguments[0]);
  6. document.writeln('arguments[1]='+arguments[1]);
  7. arguments[0]=11;
  8. document.writeln('arguments[0]='+arguments[0]);
  9. returnx+y;
  10. }
  11. document.writeln(add(2,3));
  12. </SCRIPT>
<script type="text/javascript">render_code();</script>
看例子,基本你可以把arguments当成个数组使用,但并不是真正的数组。
虽然arguments.length and arguments[index]可以在函数内改变,但建议你不要在函数内改变它们。关于arguments的具体用法可以看prototype.js.
arguments还有个属性 callee.引用当前正在执行的函数。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. functionadd(x,y){
  3. document.writeln(arguments.callee);
  4. document.writeln(typeof(arguments.callee));
  5. returnx+y;
  6. }
  7. document.writeln(add);
  8. document.writeln(typeof(add));
  9. document.writeln('</br>-----------------------</br>');
  10. add();
  11. </SCRIPT>
<script type="text/javascript">render_code();</script>

3、函数是一种数据类型
在javascript中,函数不但能象java一样当成语言的语法特性,还可以象字符串、数字、日期一样当成一种数据。
var add=function(x,y){return x+y;};其实我们函数的定义都是把函数附值给变量。函数不但可以附值给变量,还可以当成参数传递。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. varadd=function(x,y){returnx+y;};
  3. varfun=add;
  4. functionopetate(fun,x,y){
  5. returnfun(x,y);
  6. }
  7. alert(opetate(fun,2,3));
  8. </SCRIPT>
<script type="text/javascript">render_code();</script>

其实javascript的熟手不会在全局变量里(直接在js文件中)定义函数,都会定义在全局变量的属性字段中。如


代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. varMyLib={};
  3. MyLib.fun1=function(){};
  4. MyLib.fun2=function(){};
  5. alert(MyLib);
  6. alert(MyLib.fun1);
  7. </SCRIPT>
<script type="text/javascript">render_code();</script>

如果这种写法,我们就基本不会和别人写的程序发生命名上的冲突了。

4、函数的生命周期
在变量里我们知道函数有个预编译过程,这个过程我们也看到不到,另外函数定义不同写法情况也不同。所以,感觉函数的执行过程很是复杂。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. fun1();
  3. alert(fun1);
  4. /////////////把以下代码放到定义最后面可以执行。
  5. fun2();
  6. alert(fun2)
  7. fun3();
  8. alert(fun3)
  9. ///////////////////////////
  10. functionfun1(){document.writeln('fun1run!')}
  11. varfun2=function(){document.writeln('fun2run!')};
  12. varfun3=newFunction("document.writeln('fun3run!')");
  13. </SCRIPT>
<script type="text/javascript">render_code();</script>

a、javascript预编译过程(在html中, </head>前后,<body>内外有特殊情况,这指纯.js文件中)
javascript的预编译我认为是个很简单的过程,对于解释执行语言,肯定不会编译成什么中间语言。(我认为)过程如下:
首先,为执行环境(一个html也,框架环境下有几个执行环境)建立建立一个全局对象,一般客户端脚本为 window或global对象。(在这我觉得global好理解,因为浏览器会放入window总其他的属性)
然后,检查某环境中根代码块中(非函数或{}中)var关键字,把这些变量设置成global对象的属性,并附初值undefined.
如果过程中遇到直接定义的函数(fun1的定义),那么把fun1设置成global对象的属性,并附初值函数的定义(你可以把函数当成undefined,true,1,'1'等数据类型)。
b、解释执行过程
代码按照顺序执行,
一般我们把全局变量的俯值放到代码最前面,如var s="hello"; 那么把s的值用 'hello'替换预编译过程的undefined。
如果遇到变量的应用,如代码 document.writeln(a),如果我们在global找到属性a,看a是否在前面代码俯值过,如果没有,a的值为预编译的undefined。如果是隐式变量声明,在这把它添加到global的属性中去。
如果遇到类似var fun=function(){}; 把函数当成数据赋值给变量fun.
c、函数的调用过程
你运行一下以下代码,为什么结果是 test undefined local

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. vars="golbe";
  3. functionfun(s){
  4. document.writeln(s);
  5. document.writeln(a);
  6. vars="local";
  7. vara="";
  8. returns;
  9. }
  10. document.writeln(fun("test"));
  11. </SCRIPT>
<script type="text/javascript">render_code();</script>

首先:预编译代码,把s、fun设置为golbe的属性,并赋值s=undefined,fun=函数定义(可以直接调用)。

然后:按照顺序解释执行代码。赋值s="golbe"; 函数已经可以直接调用了。
执行函数:当运行到fun("test")时,开始函数调用。
(1)先为本次调用建立一个调用对象(fun-global)。
(2)预编译函数体内代码,把参数设置为fun-global的属性,值为为传 值"test",查找var,把a设置成fun-global的属性,值为undefined.(如果var s与参数名称相同,则不重复设置例如函数体内var s="local";)
(3)按照顺序执行函数内代码,当代码中遇到变量,先从调用对象属性中查找,如果找到直接使用。遇到var s="local";时,代码会覆盖调用对象中属性值(和参数名称相同)

调用对象是个暂时对象,生命周期很短,只有在调用过程中存在,递归可能会建立多个独立的调用对象。
javascript的函数应该和java中一样是线程安全的吧。

5、函数的属性和方法 a、length
看了以下代码一目了然,函数的length代表函数实际需要的参数个数。

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. functionadd(x,y){
  3. varactual=arguments.length;
  4. varexpected=arguments.callee.length;
  5. if(actual!=expected){
  6. thrownewError('函数需要'+expected+'个参数,你输入了'+actual+'个');
  7. }
  8. returnx+y;
  9. }
  10. alert(add(3,2));
  11. alert(add(3,2,3));
  12. </SCRIPT>
<script type="text/javascript">render_code();</script>
b、prototype
这个属性引用的是预定义的原型对象,只有在new 函数名 才有效。讲解对象时介绍。
c、定义自己的函数属性

代码
  1. <SCRIPTLANGUAGE="JavaScript">
  2. add.count=0;
  3. functionadd(x,y){
  4. add.count++;
  5. returnx+y;
  6. }
  7. add(3,2);
  8. add(3,2);
  9. add(3,2);
  10. add(3,2);
  11. document.writeln('共调用函数几次:'+add.count);
  12. </SCRIPT>
<script type="text/javascript">render_code();</script>

d、apply() call()方法
去读读prototype.js吧。

zkj_beyond 2006-04-06 09:33

hongliang 写道
代码
  1. functionfoo(){
  2. functionbar(){}
  3. bar();
  4. }
  5. foo();
  6. foo();
  7. foo();
  8. //...
<script type="text/javascript">render_code();</script>

我想知道一共会有多少个bar函数对象产生。。。

三次
<script>
function foo() {
function bar(a) {
//bar的调用对象只会在这部分可见
alert(a);
var a="bar_local"
alert(a);
}
bar("foo_global"); //这会引发创建bar的调用对象
}

foo();
foo();
foo();
</script>

虽然没多少人看,但我还是继续下去吧。至少使自己对javascript的理解加深不少。

凝血神抓 2006-04-06 11:40

引用
虽然没多少人看,但我还是继续下去吧。至少使自己对javascript的理解加深不少。

正在关注这个 继续啊哥们

flyjie 2006-04-06 13:35

 在楼主写的文章中学到了不少东西,thanks! 提问一下,我有一个mainframe, 里面包含两个子frame:frame1,frame2,它们共用到了一个Test.js!

代码
  1. <head>
  2. <scriptsrc="Test.js"></script>
  3. </head>
  4. <framesetrows="50%,50%">
  5. <framename="frame1"src="frame1.html"></frame>
  6. <framename="frame2"src="frame2.html"></frame>
  7. </frameset>
<script type="text/javascript">render_code();</script>

代码
  1. Test.js
  2. functionInit(parameter1,parameter2){
  3. this.parameter1=parameter1;
  4. this.parameter2=parameter2;
  5. }
  6. Init.add=function(){
  7. returnnewInit(this.parameter1+this.parameter2);
  8. }
<script type="text/javascript">render_code();</script>

我现在分别在fram1和frame2中调用了Test.js中的Init函数, 并输出变量c和c1,
页面上显示:[object Object] , 前问此object和彼Object有什么区别吗?

代码
  1. frame1:
  2. <SCRIPT>
  3. varc=newtop.Init(1,2)
  4. alert("frame1:"+c);
  5. document.writeln(c);
  6. </SCRIPT>
<script type="text/javascript">render_code();</script>

代码
  1. frame2:
  2. <SCRIPT>
  3. varc1=newtop.Init(2,1);
  4. alert("frame2:"+c1.Add);
  5. alert("frame2:"+c1);
  6. document.writeln(c1);
  7. </SCRIPT>
<script type="text/javascript">render_code();</script>

分享到:
评论

相关推荐

    JavaScript进阶:JS的全局变量和全局函数.docx

    JavaScript进阶:JS的全局变量和全局函数.docx

    JavaScript进阶(一)变量声明提升实例分析

    主要介绍了JavaScript变量声明提升,结合实例形式分析了JavaScript变量声明提升相关原理、用法与操作注意事项,需要的朋友可以参考下

    JavaScript进阶教程(第一课)第1/3页

    欢迎您继续学习Javascript进阶教程。在此之前我们已经学习了Javascript初级教程。在这一阶段的学习中我们将继续学习在上次的教程中还没有来得及谈及的问题。我还将向你们展示Javascript的许多神奇功能,使你能够制作...

    带你学习javascript的函数进阶(二)

    上一篇文章分享了《带你学习Javascript中的函数进阶(一)》,今天继续学习javascript的函数进阶的内容。 文章目录1 严格模式1.1 什么是严格模式1.2 开启严格模式3.3 严格模式中的变化2 高阶函数3 闭包3.1 变量作用...

    JavaScript核心技术 PDF扫描版

    第2章JavaScript数据类型与变量 2.1变量的标识 2.2作用域 2.3简单类型 2.4常量:有名称但不改变 2.5习题 第3章运算符和语句 3.1JavaScript语句的格式 3.2简单语句 3.3条件语句和程序流 3.4条件运算符 3.5逻辑运算符 ...

    千峰python课件笔记+源码 (凯哥)

    5、JavaScript进阶与轮播和飞机大战坦克 6、JQuery基础 7、JQuery提升 8、H5C3基础 第三章 Django 1、Django基本流程走通 2、Django中的模型 3、Django中的视图 4、Django中的模板 5、Django的高级使用 6、Django爱...

    JavaScript进阶(二)词法作用域与作用域链实例分析

    概括的说作用域就是一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量。 1.1 块级作用域 在C、Java、C#等编程语言中,下面的语法报错(伪代码) { var num = 123; { console.log( num ); // num =&gt;...

    JavaScript原型链简单图解

    JavaSciptDOM基本操作,JavaScipt函数基础,JavaScipt流程语句,JavaScript变量,JavaScript数据类型,JavaScript数组,JavaScript正则表达式,JavaScript字符串函数,Window对象等图解。JS高手进阶的工具图谱

    summary:走心的的前端进阶汇总,目前包含Js基础进阶系列、Js专题系列,不久的将来会添加ES6系列、知识专题、算法系列,感兴趣的小伙伴们不妨点个Star,一起进步吧~

    全系列预计10-15篇文章,欢迎大家指正,虚心学习提高深入变量对象立即执行函数看透闭包函数参数传递基本数据类型你真的了解Js吗JavaScript专项进阶系列变量与函数提升数组去重防抖专题节流专题深浅拷贝数据类型检

    《精通Javascript+jQuery》光盘源码

    第1部分 JavaScript.cCSS与DOM基础篇   第1章 ccJavaScript概述  1.1 JavaScript的起源  1.2 浏览器之争  1.2.1 DHTML  1.2.2 浏览器之间的冲突  1.2.3 标准的制定  1.3 JavaScript的实现  1.3.1...

    JavaScript网页特效应用开发手册

    中文名: JavaScript网页特效应用与开发手册 作者: 曹育诚图书分类: 网络 资源格式: PDF 版本: 扫描版 出版社: 知城数位书号: 9789570435139发行时间: 2000年10月03日 地区: 台湾 语言: 繁体中文 简介: 内容介绍...

    绝版级的DotNet就业班架构师课程 网络互连框架 EF+MVC框架 一线架构师亲授班

    (1)\第01天-JavaScript进阶和高级 ├─01浏览器生成dom树.png ├─02模拟鼠标事件.png ├─03引用类型对象.png ├─04关于引用类型变量的语法检查.png ├─05关于引用类型传参.png ├─06-多线程调度.png ├─07-...

    javascript基础进阶_深入剖析执行环境及作用域链

    每个执行环境都有一个与之关联的变量对象。 变量对象 环境中定义的所有变量和函数都保存在这个对象中。 全局执行环境 全局执行环境是最外围的一个执行环境。在web浏览器中,全局执行环境被认为是Window对象,因此...

    html5入门到精通 视频教程

    JavaScript基础语法03_变量 JavaScript基础语法04_数据类型 JavaScript基础语法05_进制 JavaScript基础语法06_进制转换 JavaScript基础语法07_连接符和转义字符 JavaScript基础语法08_算数运算符 JavaScript基础语法...

    important:知识点记录

    JavaScript进阶-执行上下文(理解执行上下文一篇就够了) JavaScript进阶-执行上下文栈和变量对象(一周一更) 再来40道this面试题酸爽继续(1.2w字用手整理) 为什么 0.1 + 0.2 = 0.300000004 JS事件流 JS事件循环 es6 ...

    2023年前端面试必备最新八股文(基础+进阶内容+持续更新)

    包括了css,javascript,vue,webpack,vite,html5新特性等等,包括了面试中比较常见的BFC,v8垃圾回收机制,vite和webpack的区别,vue中遇到的问到,防抖节流,深拷贝,浅拷贝,盒子模型,作用域,闭包,浏览器...

    前端JavaScript笔记整理

    JavaScript基础:变量、常量、数据类型、类型转换、运算符、语句、数组、函数、对象、堆栈 Web API:DOM操作、定时器、事件、回调函数、日期对象、节点操作、移动端事件、Windows对象、本地存储、正则表达式 ...

    深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解

    1、JavaScript中定义函数有2钟方法:  1-1.函数声明: 代码如下:function funcName(arg1,arg2,arg3){ //函数体} ①name属性:可读取函数名。非标准,浏览器支持:FF、Chrome、safari、Opera。 ②函数声明提升:指...

    精通JavaScript+jQuery Part1

    第1部分 JavaScript.cCSS与DOM基础篇   第1章 ccJavaScript概述  1.1 JavaScript的起源  1.2 浏览器之争  1.2.1 DHTML  1.2.2 浏览器之间的冲突  1.2.3 标准的制定  1.3 JavaScript的实现  ...

Global site tag (gtag.js) - Google Analytics