关于JavaScript 中的变量
- JS的变量声明语句永远是在其作用域中最先执行的,不论其定义的位置在哪里;
- 函数体内部,局部变量的优先级比同名的全局变量高。
- Javas作用域分类
- 未使用var定义的变量不论定义在什么位置都是全局变量,全局变量实质属于window下的属性
1 JS的变量声明语句永远是在其作用域中最先执行的,不论其定义的位置在哪里
var test= function()
{
console.log(s);//输出结果为undefined
var s="you";
};
test();
原因就是在test函数作用域内,虽然var s="you"在console后面,但是由于变量的声明语句会是最先执行,因此等价于:
var test= function()
{
var s;//相当于此处先执行了一步变量声明 但未赋值
console.log(s);//输出结果为undefined
var s="you";
};
test();
console.log(s)结果为undefined;
2函数体内部,局部变量的优先级比同名的全局变量高
var s="hello";
var test= function()
{
var s="you";
console.log(s);//输出结果为”you“
};
test();
局部变量优先级高,所以打印结果为"you"
3JS的作用域分类
Javascript作用域分类只有两种:全局作用域和方法作用域
函数又称作方法,因此方法作用域可以理解为函数内作用域,不同于C或者C++语言,JS没有块级作用域,for(var i=0;;i++)此处的i作用域就是for循环所在函数的作用域,而不是仅仅在for循环内部有效;
4未使用var定义的变量不论定义在什么位置都是全局变量
function test()//定义函数test
{
i=100;
}
test()//执行函数test
console.log(i);//输出100
console.log(window.i);//输出100
另外,需要注意的是 function XXX(){};仅仅是定义一个XXX()的函数,并没有执行函数代码,若此处没有test(),那么输出的i是undefined,也可以将
function XXX()
{
//code
};
XXX();
合并写成:
(function XXX()
{
//code
})():
形如:(function XXX(){})()是先定义函数XXX并且执行函数;此种写法的好处是能保证变量生存期,较少全局变量,易于变量回收
关于JavaScript 中的变量的更多相关文章
- JavaScript 中的变量命名方法
三种命名方法 在程序语言中,通常使用的变量命名方法有三种:骆驼命名法(CamelCase),帕斯卡命名法(PascalCase)和匈牙利命名法. 依靠单词的大小写拼写复合词的做法,叫做"骆驼 ...
- (转载)JavaScript中定义变量
(转载)http://blog.163.com/xuxiaoqianhz@126/blog/static/165190577201061594421870/ JavaScript中定义变量有两种方式: ...
- 在javascript中关于变量与函数的提升
在javascript中关于变量与函数的提升 一.简介 在javascript中声明变量与函数的执行步骤: 1.先预解析变量或函数声明代码,会把用var声明的变量或者函数声明的代码块进行提升操作 2. ...
- JavaScript 中定义变量时有无var声明的区别
关于JavaScript中定义变量时有无var声明的区别 var a=5; //正确 a=5; //正确 在javascript中,以上两种方法都是定义变量的正确方法.微软的Script56.CHM中 ...
- JavaScript学习系列2一JavaScript中的变量作用域
在写这篇文章之前,再次提醒一下 JavaScript 是大小写敏感的语言 // 'test', 'Test', 'TeSt' , 'TEST' 是4个不同的变量名 JavaScript中的变量,最重要 ...
- 关于Javascript中声明变量、函数的笔记
一.概念 1.变量声明 在JavaScript中,变量一般通过var关键字(隐式声明,let关键字声明除外)进行声明,如下通过var关键字声明a,b,c三个变量(并给其中的a赋值): var a=1, ...
- JavaScript 中对变量和函数声明提前的演示样例
如题所看到的,看以下的演示样例(能够使用Chrome浏览器,然后F12/或者右键,审查元素.调出开发人员工具,进入控制台console输入)(使用技巧: 控制台输入时Shift+Enter能够中途代码 ...
- 一篇文章带你了解JavaScript中的变量,作用域和内存问题
1 在JavaScript中的变量分别区分为两种: 一种为基本类型值,一种为应用类型值. 基本类型值指的是简单的数据段 引用类型值为可能由多个值组成的对象 引用类型的值是保存在内存中的对象,JavaS ...
- JavaScript中的变量在内存中的具体存储形式
栈内存和堆内存 JavaScript中的变量分为基本类型和引用类型 基本类型是保存在栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问 引用类型是保存在堆内存中的对象,值大小不固 ...
- 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...
随机推荐
- iOS_开发中引导页的设置及代码
在iOS 手机App 软件的开发中, 基本上每一个完整的App 都有与之相对应的引导页的设置,引导页也会有很多种设置的方式,根据不同的情况,选择不同的编码,在这里,我分享一下自己关于引导页的一些看法和 ...
- LeetCode 177 Nth-Highest Salary mysql,取第n条数据,limit子句 难度:1
https://leetcode.com/problems/nth-highest-salary/ ATTENTION:limit 子句只能接受int常量,不能接受运算式 CREATE FUNCTIO ...
- Spring init-method和destroy-method 的使用
Spring init-method和destroy-method 的使用 Spring 为了满足开发者在执行某方法之前或者在结束某个任务之前需要操作的一些业务,则提供了init-method和des ...
- asp.net webForm登录授权
HttpCookie cookie; cookie = FormsAuthentication.GetAuthCookie(W3Account, isRemberMe); if (isRemberMe ...
- wordpress 打开卡在1.gravatar.com
grevatar.com打不开,涉及到加载头像的地方都会变慢. 可以使用https的头像链接代替http链接 官方Gravatar头像调用ssl头像链接 进入wordpress后台->外观-&g ...
- 【浅层优化实战】ssh远程登录Linux卡慢的全过程排查及解决方案
ssh远程登录Linux卡慢的全过程排查及解决方案 前言: 在linux操作系统使用过程中偶然一次感到使用ssh远程连接软件连接操作系统需要等待许久,第一次没在意,第二次也没在意,第三次有点忍受不住了 ...
- 转 从腾讯那“偷 了”3000万QQ用户数据
http://www.icaijing.com/hot/article4899809/ http://news.cnblogs.com/n/533061/
- android editText 监听事件
在软键盘中注意 在监听的 edittext中 使用android:imeOptions属性的时候,一定要对EditText设置 android:inputType 或者 设置 android:sing ...
- 关于C语言的问卷调查(作业三)
1.你对自己的未来有什么规划?做了哪些准备? 答:我对我未来的规划就是希望能够学有所用,将来可以从事有关IT方面的,跟自己的专业对口.为此现在我需要多看一些和这个专业有关的书籍,自学一些知识,多些一些 ...
- USB协议规范学习(一)
什么是USB OHCI规范? OHCI(Open HCI)是目前使用比较广泛的三种USB主机控制器规范之一.USB体系结构是由四个主要部分组成:客户软件/USB驱动,主机控制器驱动(HCD),主机控制 ...