你的位置:首页 > Java教程

[Java教程]JavaScript高级程序设计(第2版) 笔记2


  笔记1中摘录了一些关于JavaScript的简介、组成、基础类型说明等无关精要的知识点,但个人还是觉得这些基础的东西必须了解,毕竟有总比没有好。

  而今天也就来说说有时会让初学者疑惑的一些问题,比如JavaScript的变量、作用域和内存等问题,特别需要注意的就是作用域(C#、Java等高级语言开发者你们懂得!),不懂的时候头大是在所难免滴!

  不过作为一名开发者(程序猿),遇到这些头大的问题时,只能说明自己还不算“精通”。

(四)变量、作用域和内存问题

1.  全局作用域(Global Scope)

  在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:

  (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如:

var Name="张三";function doSomething(){  var newName="李四";  function innerSay(){    alert(newName);  }  innerSay();}alert(Name); //张三alert(newName); //脚本错误doSomething(); //李四innerSay() //脚本错误 

  (2)所有未定义直接赋值的变量自动声明为拥有全局作用域

function doSomething(){
var Name="张三"; newName="李四"; alert(Name);}doSomething(); //张三alert(newName); //李四alert(Name); //脚本错误

变量blogName拥有全局作用域,而authorName在函数外部无法访问到。

  (3)所有window对象的属性拥有全局作用域

  一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。

  1.  局部作用域(Local Scope)  

  和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。

function doSomething(){  var newName="李四";  function innerSay(){    alert(newName);  }  innerSay();}alert(newName); //脚本错误innerSay(); //脚本错误

 

  今天主要就是作用域的一些了解,可能有点乱......