javascrip变量作用域
来源:互联网 发布:淘宝竹鸡打笼 编辑:程序博客网 时间:2024/06/01 23:06
本文和大家分享的主要是javascript中变量作用域相关内容,一起来看看吧,希望对大家学习javascript有所帮助。
1.用var声明的变量是有作用域的,比如我们在函数中用 var 声明一个变量
1 'use strict';2 function num(){3 //用var声明一个变量num14 var num1 = 15;5 }
函数中声明了一个变量 num1 ,在js函数中用 var 声明变量实际上就声明了一个局部变量。局部变量就是在 外部访问不到 只能在 函数内部访问 。
1 'use strict';2 function num(){3 //用var声明一个变量num14 var num1 = 15;5 }6 alert(num1);//num1 is not defined
2.在函数外定义变量的情况
var num1 = 15;//var声明变量
alert(num1);//15
function add(){
alert(num1+5);
}
add();//20
不在函数中定义的变量是全局变量,全局变量就是在任何地方都可以访问到
3.不使用 var 的情况
js允许变量不用声明就可以使用,不用var自动就是全局变量
num1 = 15;
alert(num1);//15
*但你最好不要这样做,如果引入多个js文件里面都有一个不用var声明的全局变量会污染全局,bug也不容易排查。使用严格模式‘use strict’则可避免这种情况
‘use strict’;
num1 = 15;//ReferenceError: num1 is not defined 会报错
4.两个函数内的变量互不影响
function num1(){
var age = 15;
alert(age);
}
num1()//15
function num2(){
var age = 16;
alert(age);
}
num2();//16;
函数内嵌套:内部函数可以访问外部函数的变量,而外部函数访问不了内部函数
function num(){
var age =15;
function num1(){
var s = age+10;
alert(s);//25
}
alert(s+2);//会报错
}
如果是函数内的变量是重名的情况
function num(){
var age = 15;
function num1(){
var age =20;
alert(age);//20
}
alert(age);//15
num1();
}
num();
说明函数是从内而外查找的,当内部函数发现与外部函数重名就会自动屏蔽掉外部函数。
5.变量提升
变量可以先使用后声明
function num(){
y = 5;
alert(30+y);
var y;
}num();//35
对于上述函数num()javascript引擎看到的是
function num(){
var y;
y =5;
alert(30+y);
}
只能对变量提升,变量初始化不可以提升
function num(){
var y=5;
alert(y+x);
var x = 30;
}
num();//NaN
要养成在函数中顶部先声明变量的好习惯!
在上面也说过了全局变量的概念
不在任何函数内定义的变量就是全局变量
js默认有一个全局对象window,全局作用域下的变量都是绑定到window的一个属性。
var num = 15;
alert(num);//15
alert(window.num)//15
来源:博客园
阅读全文
0 0
- javascrip变量作用域
- 关于 javascrip 变量作用域深入理解的好文章 与 面向对象编程的好文章
- 第一章 javascrip 变量
- Javascrip变量问题
- 现在Javascrip最主要的作用
- javascrip获取变量的数据类型
- JavaScrip的数据类型及变量
- static变量作用域
- 变量作用域2
- 变量作用域3
- 变量作用域1
- 变量作用域
- 变量作用域
- C++变量作用域
- 变量作用域
- JavaScript 变量作用域
- php变量作用域
- 变量的作用域
- Android 学习笔记-布局2
- Android布局
- Java基础入门(一)开发环境配置
- 基于JAVA的抽奖系统
- VMware workstation_12打开vmdk文件
- javascrip变量作用域
- robbin四大模型
- Java 中的中文编码问题
- 贝叶斯估计详解
- c#设计模式==装饰模式
- 剑指offer:第25题二叉树和为某一值得路径
- 理解多线程
- Java反射应用_自己实现简易Spring IOC逻辑过程
- 堆排序