关于js中变量声明和作用域的理解
1. var是声明一个变量;虽然声明了这个变量,但在存入值之前,它的初始值是 undefined;2.全局变量:拥有全局作用域,在js代码中的任何地方都是有定义的;
3.局部变量:在函数内声明的变量只在函数内有定义,作用域是局部的,只在函数内有定义;
4.全局作用域编写代码时可以不写var,但声明局部变量时必须使用var语句;
5.在函数体内,局部变量的优先级高于同名的全局变量。如果局部变量和全局变量同名,那么全局变量会被局部变量所遮盖;但全局变量的值不会改变;
6.作用域链查找规则:自上而下(一个或多个script),由里到外查找(函数中)。
01.
var foo=1;
function test(){
var foo=2; //var声明,所以是局部变量
alert(foo);
}
test(); //2
alert(foo); //全局变量仍是1
02.
var foo=1;
function test(){
foo=2; //未声明,所以是全局变量
alert(foo);
}
test(); //2
alert(foo); //全局变量被修改为2
03.
var foo=1;
function test(){
alert(foo);
var foo=2;//var声明,所以是局部变量
}
test(); //undefined
alert(foo); //全局变量仍为1
03中,foo是局部变量,局部变量优先级大于全局变量,但因为变量在声明但未定义前,是undefined.所以test()是undefined.等价于04.
04.
var foo=1;
function test(){
var foo;//var声明,所以是局部变量
alert(foo);
foo=2;
}
test(); //undefined
alert(foo); //全局变量仍为1
关于js中变量声明和作用域的理解的更多相关文章
- js中变量声明有var和没有var的区别
转js中var用与不用的区别 2015年07月13日 16:08:22 阅读数:3627 Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种 ...
- js中变量声明提前
demo1: var a=10; function b(){alert(a); var a=20; alert(a)} b()//undefined 20 因为:js编译器在执行b这个函数时,会把函数 ...
- js函数中变量声明提前
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- js中变量的声明
大家都知道js中变量的声明是要提前的,下面有4个样例: 1.if(!"t" in window){ var t = 1; } alert(t);答案是undefine ...
- js中要声明变量吗?
你好,js语言是弱类型语言,无需申明即可直接使用,默认是作为全局变量使用的.建议:在function里时应使用var 申明变量,这样改变量仅仅只在function的生存周期内存在,不会污染到,全局控件 ...
- JavaScript中变量声明有var和没var的区别
JavaScript中变量声明有var和没var的区别 JavaScript中有var和没var的区别 Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是 (functi ...
- js中的块级作用域
概述 函数是js中最常见的作用域单元, 声明在一个函数内部的变量或函数会在所处的作用域中隐藏起来, 这是有意为之的非常好的设计原则. 但是随着js的发展, 我们有了某个代码块(通常指{..}内部)隐藏 ...
- javascript变量声明及作用域总结
javascript变量声明及作用域总结 一.总结 一句话总结:还是得好好看书,光看视频是不得行的,浅学无用,要相互印证,要真正理解才有用,比如<Javascript权威指南> 书 1.j ...
- 浅谈javascript函数,变量声明及作用域
javascript函数跟变量的声明.作用域这些概念网上都已经讲烂了. 这里写个博客,也相当于做个笔记. 变量声明 首先看个例子: var globalVar = "gv"; fu ...
随机推荐
- CodeForces 651B Beautiful Paintings 贪心
A. Joysticks time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- Hearthstone-Deck-Tracker项目的编译
https://github.com/HearthSim/Hearthstone-Deck-Tracker https://github.com/HearthSim/HearthDb https:// ...
- JSONObject.fromObject
JSONObject.fromObjectjava.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRun ...
- application 网站计数器
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- wooyunAPI
经常要爬去乌云的信息,但是每次都是硬爬,写完了发现乌云有提供API的,整理给大家: 1. WooYun Api是什么 通过WooYun开放的Api接口,其它网站或应用可以根据自己获取的权限调用WooY ...
- 解耦HTML、CSS和JavaScript
当前在互联网上,任何一个稍微复杂的网站或者应用程序都会包含许多HTML.CSS和JavaScript.随着互联网运用的发展以及我们对它的依赖性日益增加,设定一个关于组织和维护你的前端代码的计划是绝对需 ...
- iOS - OC NSSet 集合
前言 NSSet:集合 @interface NSSet<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopyin ...
- ABAP 没有地方输入\H 进入DEBUG 怎么办?
把如下代码保存,命名debug.txt ,把这个文件拖拉到要调试的窗口. [FUNCTION]Command=/HTitle=Barry TestType=SystemCommand
- HDU5730 FFT+CDQ分治
题意:dp[n] = ∑ ( dp[n-i]*a[i] )+a[n], ( 1 <= i < n) cdq分治. 计算出dp[l ~ mid]后,dp[l ~ mid]与a[1 ~ r-l ...
- Oracle 11g安装步骤详谈
又是十月南京阴雨天气 图书馆花了一个多小左右把11g安装折腾好了.其中折腾SQL Developer 花了好长时间,总算搞定了.好了,先总结下安装步骤,希望给后面的童鞋提高安装效率. 相互方便 共同 ...