`
JavaCrazyer
  • 浏览: 2990275 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

JavaScript声明变量var和this的总结

阅读更多

很多人都觉得在javascript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在window区域加不加var确实是一样,因为都会是全局变量的效果,而如果在函数内部,加var就是局部变量,不加是全局变量。
function test(){  
var1 = 2;
alert(var1);     
}  
test();  
alert(var1);
这样可以显示为2
function test(){  
var var1 = 2;
alert(var1);     
}  
test();  
alert(var1);
则为变量未定义错误

this多用于函数内部,它永远指向调用他的那个对象,看看下面的例子就明白了

var test={
   a:"test",
   msg:function(){
     a="1234";
     alert(this.a);
     var msg1= function(){
alert(this.a);
     }
     msg1();
   }
}
test.msg(); 这样会分别显示 "test" ,"1234".

但this也不是这么简单,在看看下面的例子
function test1()  
{  
this.var01 = "test";
}

function test2()  
{
alert(var01);
}

var a= new test1();
test1();
test2();
alert(a.var01);
都可以得到"test".
可以发现var01变量既是一个全局变量,又是test1内的成员变量。也就是说,如果在函数内部用this定义的变量,如果这个函数你不是直接来运行,而是作为一个类来new的话,虽然函数也要执行一遍,但里面的this定义的 变量是作为类的成员变量来定义的,也就是一个局部变量,上面的测试代码,如果去掉test1(); test2()运行就是未定义变量错误了。

说到变量,最后提一下js变量无类型的说法,这个说法本身没有错,但js变量无类型,这话很模糊,有的人会理解成js 里面没有数据类型。这显然是错误的,js 里面也有数字,字符,布尔,类等数据类型。说变量无类型,指的是刚定义一个变量的时候,这个变量是没有类型的,当你给它赋值的时候,值是什么类型,那这个变量就是什么类型了

 

引自博友:http://hi.baidu.com/netkey/blog/item/df6ed209339b7c88d1581be2.html

2
1
分享到:
评论

相关推荐

    【JavaScript源代码】NodeJS和浏览器中this关键字的不同之处.docx

    NodeJS和浏览器中this关键字的不同之处  学习过JavaScript的人肯定清楚 处在不同环境下this的指向问题。那么看下面的代码 var type = 1 function toWhere(){ this.type = 2; } toWhere(); console.log(type)...

    javascript中var的重要性分析

    javascript 的 var 作用是声明变量。 一般情况下不写都不会出错,但有些情况如果不写,会有不同的结果。先看下面的示例: <div id=a></div> [removed] a = 1; alert(a); [removed] 上面这个例子在FF Chrome...

    javascript函数的解释

    13.JS中声明变量使用:var来进行声明 14.JS中的判断语句结构:if(condition){}else{} 15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop} 16.循环中止的命令是:break 17.JS...

    分析 JavaScript 中令人困惑的变量赋值

    Javascript是一门弱类型的语言,声明变量不需要声明其类型,var x 就可以等于任何类型的值。 比如: var str = “string….”; var arr = [“this”,”is”,”array”]; var obj = {name:”caizhongqi”,...

    JavaScript 面向对象的之私有成员和公开成员

    代码如下: //声明类,就是一个方法,其实在JavaScript中,命名空间、类、成员…. 一切皆对象 MyClass =function(){ var _this=this; //私有变量 var aa=”11″; //公开变量 this.bb=”22″; //私有方法 function ...

    JavaScript 面向对象的 私有成员和公开成员

    代码如下: //声明类,就是一个方法,其实在JavaScript中,命名空间、类、成员…. 一切皆对象 MyClass =function(){ var _this=this; //私有变量 var aa=”11″; //公开变量 this.bb=”22″; //私有方法 function ...

    JavaScript内核系列

    与Java,C/C++不同,Javascript是弱类型的,它的数据类型无需在声明时指定,解释器会根据上下文对变量进行实例化,比如: Js代码 1. //定义一个变量s,并赋值为字符串 2. var s = "text"; 3. print(s); 4...

    javascript删除数组重复元素的方法汇总

    本文实例讲述了javascript删除数组重复... //集中声明变量 var oldArr=this, newArr=[oldArr[0]], len=oldArr.length, i=1; //过滤空数组 if(!len) return this; //过滤重复元素 for(;i<len;i++){ newA

    JavaScript中用let语句声明作用域的用法讲解

     可以在声明变量时为变量赋值,也可以稍后在脚本中给变量赋值。  使用 let 声明的变量,在声明前无法使用,否则将会导致错误。 如果未在 let 语句中初始化您的变量,则将自动为其分配 JavaScript 值 undefined。 ...

    JavaScript易错知识点整理

    本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点。...

    JavaScript中的this关键字介绍与使用实例

    当创建一个类的时候,如果希望下面new出来的每个类都拥有一些通用的变量或者其他的函数,这个this关键字这是最好的方式。 当然,既然是面向对象的语言,...//this声明的是公开变量,外部可以访问 this.show=functio

    【经验总结】编写JavaScript代码时应遵循的14条规律

    当声明一个或者是全局或者是函数级(function-level)的变量,需总是前置”var”关键词,下面的例子将强调不这样做潜在的问题。 不使用 Var 造成的问题 var i=0; // This is good - creates a global variable ...

    Javascript中的delete操作符详细介绍

    javascript中,变量和对象属性关系非常微妙,甚至可以很多时候会被等同起来,因为 javascript 在执行脚本之前会创建一个global对象,在浏览器中就是window对象,所有的全局变量都是这个global对象的属性,执行函数时...

    Javascript笔记

    声明JavaScript变量后,它们的初始值为undefined 。 如果对未定义的变量进行数学运算,则结果将为NaN ,这表示“不是数字” 变量区分大小写 JavaScript变量遵循camel case myVar, inMyCity , iDontGiveAFuck; 加号 ...

    107个常用javascript语句

    13.JS中声明变量使用:var来进行声明 14.JS中的判断语句结构:if(condition){}else{} 15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop} 16.循环中止的命令是:break 17.JS...

    原生javascript实现图片弹窗交互效果

    【一】用var 声明多个变量,比每个变量都用var快多了  代码如下: var sScrollTop = document.body.scrollTop || document.documentElement.scrollTop,  sWindow_h = document.documentElement.clientHeight,  t_...

    JavaScript笔记

    所有的变量都用var声明 5.数据类型: |--String(字符串类型) |--Number(数字类型) |--Boolean(布尔类型)0、-0、null、""、false/undefined或NaN,则该对象设置为false。其余都可以当true 6.数据类型的隐式转换...

    JavaScript的21条基本知识点

    2.声明变量如果不写var,则为声明了全局变量;任何不是方法的函数,都是全局变量,其里面的this都指向window;3.%运算符,求余数,保留整数,y=5;x=y%2;则x=1;4.如需把两个或多个字符串变量连接起来,请使用 + 运算符...

    微软JavaScript手册

    &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 将两个表达式的值相乘。 *= 运算符 将变量与表达式的值相乘,结果赋给变量。 + 运算符 将两个...

    JavaScript的public、private和privileged模式

    Summary 私有变量 在对象内部使用’var’关键字来声明,而且它只能被私有函数和特权方法访问。 私有函数 在对象的构造函数里声明(或者是通过var functionName=function(){…}来定义),它能被特权函数调用(包括...

Global site tag (gtag.js) - Google Analytics