笔记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(); //脚本错误
今天主要就是作用域的一些了解,可能有点乱......
时间: 2024-10-12 13:48:58