`
guanhuaing
  • 浏览: 1197789 次
文章分类
社区版块
存档分类
最新评论

JavaScript的变量区分

 
阅读更多

一、Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分)。切记,是function块,而for、while、if块并不是作用域的划分标准,可以看看以下几个例子:
<script>
function test2(){
alert ("before for scope:"+i); // i未赋值(并不是未声明!使用未声明的变量或函数全抛出致命错误而中断脚本执行

// 此时i的值是underfined
for(var i=0;i<3;i++){
alert("in for scope:"+i); // i的值是 0、1、2, 当i为3时跳出循环
}
alert("after for scope:"+i); // i的值是3,注意,此时已经在for scope以外,但i的值仍然保留为3

while(true){
var j = 1;
break;
}
alert(j); // j的值是1,注意,此时已经在while scope以外,但j的值仍然保留为1

if(true){
var k = 1;
}
alert(k); //k的值是1,注意,此时已经在if scope以外,但k的值仍然保留为1
}

test2();
//若在此时(function scope之外)再输出只存在于test2 这个function scope里的 i、j、k变量会发生神马效果呢?
alert(i); //error! 没错,是error,原因是变量i未声明(并不是未赋值,区分test2函数的第一行输出),导致脚本错误,程序到此结束!
alert("这行打印还会输出吗?"); //未执行
alert(j); //未执行
alert(k); //未执行
</script>

二、Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域。怎么理解呢?看下面一个例子:
<script>
var a =1;
function test(){
alert(a);//a为undefined! 这个a并不是全局变量,这是因为在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量,
//所以全局变量a被覆盖了,这说明了Javascript在执行前会对整个脚本文件的定义部分做完整分析,所以在函数test()执行前,
//函数体中的变量a就被指向内部的局部变量.而不是指向外部的全局变量. 但这时a只有声明,还没赋值,所以输出undefined。
a=4
alert(a); //a为4,没悬念了吧? 这里的a还是局部变量哦!
var a; //局部变量a在这行声明
alert(a); //a还是为4,这是因为之前已把4赋给a了
}
test();
alert(a); //a为1,这里并不在function scope内,a的值为全局变量的值
</script>

三,当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope,而当全局变量遇上局部变量时,怎样使用全局变量呢?用window.globalVariableName

<script>
var a =1;
function test(){
alert(window.a); //a为1,这里的a是全局变量哦!
var a=2; //局部变量a在这行定义
alert(a); //a为2,这里的a是全局变量哦!
}
test();
alert(a); //a为1,这里并不在function scope内,a的值为全局变量的值
</script>

分享到:
评论

相关推荐

    Web前端开发技术-变量的命名规范.pptx

    认识JavaScript变量 变量的命名规范 JavaScript Web前端开发技术 认识JavaScript变量 2.变量的命名规范 在对变量进行命名时,需要遵循变量的命名规范,具体如下: 由字母、数字、下划线和美元符号($)组成 严格区分...

    JavaScript 变量命名规则

    JScript 是一种区分大小写的语言。 第一个字符必须是一个 ASCII 字母(大小写均可),或一个下划线(_)。注意第一个字符不能是数字。 后续的字符必须是字母、数字或下划线。 变量名称一定不能是 保留字。 下面给出...

    理解JavaScript变量作用域更轻松

    本文不打算深入讲解JavaScript变量作用域问题(其实本人也没有能力能把这一话题讲的深入些),也不讲“闭包”话题,本文只讨论最实用的JavaScript作用域知识点。 一、JavaScript作用域分类 JavaScript就两种作用域:...

    JavaScript 变量基础知识

    1.区分大小写  [removed] ... 全部的变量都用var关键字标示,JavaScript解释器会自动分配 3.句子的尾部分号是可选的  如:var name=23; or var name=23都可以  &lt;script language=’javascript’

    超全面的javascript中变量命名规则

    变量名区分大小写,允许包含字母、数字、美元符号($)和下划线,但第一个字符不允许是数字,不允许包含空格和其他标点符号 变量命名长度应该尽可能的短,并抓住要点,尽量在变量名中体现出值的类型 尽量避免使用...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    74、原生JavaScript判断字符串是为网址不区分大小写 75、原生JavaScript判断字符串是否为小数 76、原生JavaScript判断字符串是否为整数 77、原生JavaScript判断字符串是否为浮点数 78、原生JavaScript判断字符是否为...

    JavaScript声明变量名的语法规则

     1.JS区分大小写。如变量score与Score是不一样的,相当两个变量。  2.变量虽然可以不声明,直接使用,但不规范,会涉及变量名提升等问题。 以上所述就是本文的全部内容了,希望大家能够喜欢。

    JavaScript详解(第2版)

    2.2.1 区分大小写问题 27 2.2.2 自由形式及保留字 27 2.2.3 语句及分号 28 2.2.4 注释 28 ... 2.2.5 〈script〉标签   2.3 生成HTML 并输出显示   2.3.1 字符串及字符串串联   2.3.2 write()及...

    javascript 中null和undefined区分和比较

    javascript 中null和undefined区分和比较 Undefined类型 Undefined 类型只有一个值,即特殊 undefined 。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined , 例如: var message; alert&#40;...

    javaScript基础

    3. javaScript的核心语法有变量的声明和赋值、数据类型、逻辑控制语句、注释、在javaScript中、代码区分大小写,并且建议每一句的末尾使用(;)结束 4. 在javaScript中常用的输入/输出方法是prompt()方法和alert()...

    Javascript笔记

    Java脚本 评论的使用 对于一行注释-** //this is a comment ** 对于多个ines-** /* this is multi line comment */ ** ...变量区分大小写 JavaScript变量遵循camel case myVar, inMyCity , iDontGiveAFuck; 加号 le

    java源码结构-FCC-JavaScript-Algorithms-and-Data-Structures-Certification:完成

    声明JavaScript变量 使用赋值运算符存储值 将一个变量的值分配给另一个 用赋值运算符初始化变量 了解未初始化的变量 了解变量中的区分大小写 用JavaScript加两个数字 用JavaScript减去一个数字 使用JavaScript将两个...

    javascript学习笔记.docx

    写未声明的变量会是JavaScript环境自动产生一个全局变量。 2) 对于完全等同“===”,两个null或者两个undefined是等同的;但null与undefined是不等同的。 3) 对于相等“==”, null与undefined是相等的。若值与对象...

    JavaScript经典实例

     2.2测试不区分大小写的子字符串匹配  2.3验证社会安全号码  2.4找到并突出显示一个模式的所有实例  2.5使用新字符串替换模式  2.6使用捕获圆括号交换一个字符串中的单词  2.7使用正则表达式来去除空白  2.8...

    JavaScript每天必学之基础知识

    ECMASCript中的一切(包括变量,函数名和操作符)都区分大小写。  1. 变量  变量在第一次用到时就设置于内存中,便于后来在脚本中引用。使用变量之前先进行声明。可以使用 var 关键字来进行变量声明。 var ...

    JS学习之变量、数据类型比较

    (1)ECMAScript中的一切(变量、函数名和操作符)都区分大小写。 (2)JavaScript的标识符:变量、函数、属性的名字,或者函数的参数。 标识符的命名规则: 由字母、数字、下划线(_)或美元符号($)组成; 不能以...

    布尔教育_Javascript基础1

    声明变量用var变量名来声明注意注意: 变量名区分大小写 str 和Str不是一个变量注意注意: 变量名 前 必须加 var3课课 JS变量类型变量类型js的变

    freeCodeCamp_JavaScript_Algorithms:freeCodeCamp JavaScript数据结构和算法解决方案

    了解变量中的区分大小写 用JavaScript减去一个数字 使用JavaScript将两个数相乘 使用JavaScript将一个数除以另一个 使用JavaScript递增数字 使用JavaScript减少数字 使用JavaScript创建十进制数 用...

    JS如何定义用字符串拼接的变量

    但是变量的名称是根据参数的不同而区分的。 例如可能需要生成 date_1,date_2,datet_3… (后面的数字是根据参数来的)。 所以我的函数名 应该由 var name = “test_”+num; 生成函数名 但这问题就来了。 1可以使用 ...

Global site tag (gtag.js) - Google Analytics