JS技术

JavaScript学习(1):基础(2)

字号+ 作者:H5之家 来源:H5之家 2015-09-14 11:00 我要评论( )

1 function loopTest(){ 2 var start = 1 ; 3 var end = 100 ; 4 var result = 0 ; 5 for (i = start; i = end; i++ ){ 6 result = result + i; 7 } 8 print (result); 9 } 3.3 条件 JavaScript使用if、switch来完

1 function loopTest(){ 2 var start = 1; 3 var end = 100; 4 var result = 0; 5 for (i = start; i <= end; i++){ 6 result = result + i; 7 } 8 print (result); 9 }

  3.3 条件

  JavaScript使用if、switch来完成条件判断,下面是一个关于分数分类的例子:

1 function gradeLevel(grade){ 2 var level; 3 if (grade <= 100 && grade >= 90) level="优秀"; (grade >= 80) level = "良好"; (grade >= 60) level = "及格"; 6 else level="不及格"; 7 print(level); 8 }

  4. 函数

  函数是JavaScript很重要的一部分,它是模块化的基础。我们在上面的示例中已经定义了很多函数,接下来我们看一些更有意思的东西。

  4.1 变量的作用域

  在JavaScript中,变量的作用域可以分为全局作用域和局部作用域。在函数体内部声明的变量属于局部变量。

  来看下面的例子:

1 var a = 1; change1(){ 4 a=2; 5 } change2(){ 8 var a =3; 9 } print(obj){ 12 document.write(obj); 13 document.write("<br>"); 14 } print(a); 19 change1(); 20 print(a); 21 change2(); 22 print(a);

  从运行结果可以看出,change1修改了全局变量a的值,但change2没有修改,这是因为在change2中定义了一个同名的局部变量,所以在该方法体内发生的操作只作用在局部变量上。

  4.2 嵌套函数

  JavaScript允许在函数体内嵌套函数,这样从某种程度上,可以控制一些变量在某些函数内共享。

  下面是一个实现四则运算的例子:

1 function operation(left,right,op){ 2 function add(){ 3 return left + right; 4 } 5 function minus(){ 6 return left - right; 7 } 8 function multiple(){ 9 return left*right; 10 } 11 function divide(){ 12 return left/right; 13 } 14 if (op=="+") print (add()); (op=="-") print (minus()); (op=="*") print (multiple()); (op=="http://www.cnblogs.com/") print (divide()); 18 else print ("Invalid operation."); 19 }

  对于示例代码,我们可以发现,内嵌函数可以访问外部函数的参数、全局变量等。

  在调用函数时,通常是没有办法直接访问内嵌函数的。

  4.3 函数调用的机制

  JavaScript使用栈和上下文的机制来调用函数,我们可以将JavaScript执行时的每一行代码的顺序看做是上下文,并且使用栈来存储上下文。

  当我们调用一个方法时,在调用前,栈会保存当前上下文,然后调用函数,在调用结束后,栈会从之前保存过的上下文开始继续执行。

  如果上下文增长过快,会导致堆栈溢出,例如当我们在A方法中调用B方法,然后在B方法中调用A方法,这种循环调用的方式很容易就将堆栈搞坏了。

  4.4 函数作为值的处理

  在JavaScript中,函数也是一种值,这是和其他语言不太一样的。

  来看下面的代码:

1 var a=false; 2 function test(){ 3 print("test"); 4 } 5 6 (a||test)(); b=test; 9 b();

  如果要理解“函数都是值”的意思,我们可以从某种程度上认为b是一个函数指针,它指向了test函数。

  4.5 闭包

  JavaScript中的闭包是指函数的返回值是一个函数,并且返回值函数使用了外部函数的变量(参数或者局部变量)。

  对于嵌套函数来讲,它可以访问外部函数的参数或者局部变量,示例如下:

1 function foo(x){ 2 var y=1; 3 function bar(z){ 4 y=y+1; 5 print(x+y+z); 6 } 7 bar(1); 8 } 9 10 foo(1);

  在这里,嵌套函数bar访问了外部函数foo的参数x及局部变量y,并且对y有加1的操作,但这不叫闭包,我们多次调用foo(1),并没有使得y递增。

  下面才是闭包:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 老生常谈,JavaScript闭包中的this对象

    老生常谈,JavaScript闭包中的this对象

    2016-02-26 10:21

  • 学习JavaScript之this,call,apply

    学习JavaScript之this,call,apply

    2016-01-28 20:45

  • JavaScript复习笔记--字符串

    JavaScript复习笔记--字符串

    2016-01-27 17:16

  • WEB前端教程-JavaScript里的类和继承

    WEB前端教程-JavaScript里的类和继承

    2016-01-21 15:28

网友点评
t