200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Javascript 变量作用域 两个可能会被忽略的小特性【javascript】

Javascript 变量作用域 两个可能会被忽略的小特性【javascript】

时间:2023-07-30 23:40:52

相关推荐

Javascript 变量作用域 两个可能会被忽略的小特性【javascript】

web前端|js教程

Javascript,变量作用域

web前端-js教程

也许有些高手早已知道了,但是我觉得这两个东西还是有一些价值的,所以拿到这里和大家分享一下吧

. 有如下代码:

dzzoffice 源码解读,ubuntu修改mqtt配置,多页新闻爬虫,php nonshell,医学英文seolzw

function test() {

with (location) {

var temp = "an url";

}

alert(temp);

}

test();

调用这个函数会输出什么呢? 也许会认为它会弹出undefined, 但实际上,它弹出的是”an url”这个字符串,这就涉及到JavaScript中变量作用域的一个概念。

JS中,每个作用域都有一个相应的”变量对象”(这么叫不一定准确,知道有这么个东西就行了),这里面存放着当前作用域定义的标识符。JS程序开始的时候,会进入全局作用域, 在我们的程序中,因为全局作用域中定义了test函数,所以它这里的“变量对象”就存放了test函数的标识符。接下来,我们调用了test函数,就进入了,test函数的作用域,test函数本身的作用域也有自己的”变量对象”,进入test的作用域的时候,也会把全局作用域里存放的标识符复制进来,所以,在test函数中就可以访问全局作用域中定义的标识符了,但是在外层作用域,是不能看到内层的内容的。如果这样的话,那我们这里的alert(temp)就会输出undefined,因为temp是在内层作用域定义的。但是为什么在这里却能够找到在内层作用域里定义的标识符呢?

因为with语句块中作用域的”变量对象” 是只读的,所以在他本层定义的标识符,不能存储到本层,而是存储到它的上一层作用域,也就是test函数的作用域,所以,我们的alert(temp)这条语句,就可以访问到那个在内层定义的temp变量了。同样的情形还出现在try catch 语句里面。

.Javascript中没有语句块的概念,代码如下:

手机引导页源码,ubuntu更改文件用户,tomcat8.0技术简介,爬虫队列Python,最小权限管理系统php,php seo()lzw

if (true) {

var temp = "oh";

}

alert(temp);

很简单的几行代码,如果是按照通常的程序语言经验,我们会认为alert语句会报错,然而事实并不是这样,alert语句正常的输出了“oh” 这个字符串,所以在

Javascript中不存在语句块的概念。

上面两个示例都很简单,也许并不是多高的技术,很多高手应该早已了解,但是这两个语言特性应该还是比较有用的,也许了解这些特性后,在写JS的时候会减少一些出错的机会,所以还是发上来和大家分享一下,希望能够对大家写JS的时候帮助。

网页留言板源码 php,ubuntu更改系统时间,python爬虫点赞,php shouce,河北前端seolzw

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。