Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量

 

一、js变量的类型及申明方式

var i=100;//Number类型

var i="variable";//String类型 
var i=false;//boolen类型
var i={x:4};//Object类型 
var i=[1,2,3];//Array类型
前三种是基本类型,后两种为引用类型
1.引用类型相对基本类型可以为其添加属性方法
2.基本类型被复制于另一个变量时,会在该变量对象创建一个新值,然后把值复制到为新变量分配的位置上,而引用类型引用的都是同一个对象。
 
JS中变量申明分显式申明和隐式申明。 
var i=100;//显式申明 
i=100;//隐式申明 
在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。   
当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。
 
 
二、js变量作用域

js变量作用域可分为:"全局变量"和"局部变量"

"全局变量":申明在函数之外的变量

"局部变量":申明在函数体中的变量,并且只能在当前函数体内访问,如:function(){var a = 0;}

注:在申明变量是凡是没有var关键字,而直接赋值的变量均为全局变量

示例:

下面就通过几道小例子来熟悉下

1、function test() {

a = 30;

var b = 20;

}

test();

console.log("a="+a); //这里很明显,a为全局变量

console.log("b="+b);//b为局部变量,故在函数test外调用是,提示未定义

 

2、

var a = 1;

function test() {

console.log("a="+a); //这里a为undefined

/*函数中声明的变量在整个函数中都有定义。如果函数内部有定义变量,即使在定义之前输出但会先执行后面定义语句,然后判断输出结果,所以说声明的变量在整个函数中都是起作用的。*/

var a = 2;

}

test();

 

3、

给两个小例子作为对比:

var a; function fun() { a = "global"; } console.log(a);//输出undefined

 

var a; function fun() { a = "global"; }

fun();console.log(a);//输出 global

 

对于上面这两个小例子,它们唯一的区别就是一个执行了fun函数,一个没有执行;

如果就是

var a;console.log(a);//由于a只定义,但没初始化,故输出undefined

而function fun(){...}中对a进行初始化,初始化操作实在fun函数作用域内,如果不执行fun()那么初始化操作也不会执行

4、函数域优先于全局域,故局部变量a会覆盖掉全局变量a

var a=1;

function main(){

var a=2;//局部变量

console.log(a);//2

}

main();

console.log(a);//1

 

5、javascript没有块级作用域

function test(){

for(var i = 0 ; i < 3 ; i++){

//i=0,1,2,最后执行到i=3时退出循环

}

console.log(i);//3

}

test();

相当于

function test(){

var i;

for(i = 0; i < 3; i++){

//i=0,1,2,最后执行到i=3时退出循环

}

console.log(i);//3

}

test();

 

js变量及其作用域的更多相关文章

  1. js变量及其作用域(附例子及讲解)

    Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量   工具/原料   Ch ...

  2. 详解js变量、作用域及内存

    详解js变量.作用域及内存 来源:伯乐在线 作者:trigkit4       原文出处: trigkit4    基本类型值有:undefined,NUll,Boolean,Number和Strin ...

  3. JS变量、作用域、内存

    写到这个题目<JS变量.作用域,内存>,我就不由自主想起了黄金三嫖客.可能是名字有点像,嗯,一定是这样子的! JS接触下来,应该是要比Java简单不少的,所以,要学好啊.立个flag半年后 ...

  4. js课程 1-4 js变量的作用域是怎样的

    js课程  1-4   js变量的作用域是怎样的 一.总结 一句话总结:只有在函数内部前面带var的变量为局部变量,局部变量只能在函数体内使用. 1.什么情况下会出现NaN类型的错误,举一例? Num ...

  5. Js 变量的作用域

    变量的作用域 所有的变量作用域是指在哪里可用哪里不可用 局部作用域和全局作用域 在js中以函数来分割作用域 在函数里面就叫做局部作用域,在函数外面的就叫全局作用域 在函数里面如果省略var 关键字 那 ...

  6. JS变量的作用域

    深入理解JavaScript变量的作用域   1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在 ...

  7. js变量的作用域、变量的提升、函数的提升

    变量的作用域在函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问.在函数内部声明的变量,叫做局部变量,因为它只能在当前函数的内部访问. ECMAScript 6 之前的 Jav ...

  8. js变量的作用域与函数作用域

    引自 1. 变量的作用域(var与let的区别) 在函数之外声明的变量,叫做全局变量,因为它可被当前文档中的任何其他代码所访问.在函数内部声明的变量,叫做局部变量,因为它只能在当前函数的内部访问. E ...

  9. 第 1 章 JS变量、作用域

    目录 一. 判断变量类型 二.作用域 和 上下文 1. 作用链 2. 上下文(this) 二.JS的解析机制 1. 预解析 三.垃圾收集 内存管理销毁 @(es5) 基本类型 引用类型 一. 判断变量 ...

随机推荐

  1. 面对对象之@classmethod、@staticmethod用法

    @classmethod用法(修饰的函数,第一个参数cls默认是类名,调用方法:实例对象或类对象.方法) class C_mthod(object): name = "f**k" ...

  2. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  3. Duiib 创建不规则窗口(转载)

    方法一: 转载:http://blog.csdn.net/chenlycly/article/details/46447297 转载:http://blog.csdn.net/harvic880925 ...

  4. dubbo(转载)

    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...

  5. Android runtime Exception 整理

    一般面试中java Exception(runtimeException )是必会被问到的问题 常见的异常列出四五种,是基本要求.更多的....需要注意积累了   常见的几种如下:   NullPoi ...

  6. 第一次接触OOM

    前几天机器上一直遇到cpu100%,负载很高,经常报out of memory. 今天机器又遇到了,感觉这个东西无从下手,内存不够,tree看了下cache是不是太多了. 清理了一下,其实占用的不是特 ...

  7. jq菜单折叠效果

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. 欧拉回路(hdu3018)

    刚学图论不久,看着别人的博客慢慢学了一点基础的,感觉还是有点力不从心,感觉图论的题好多长得都很像,什么太监算法(Tarjan),Kosaraju,当然最基础的还是并查集...好了继续介绍这道题.... ...

  9. hightcharts 3d 堆积图下钻

    图片效果 ***************代码部分****************************************************** <!doctype html> ...

  10. WebLogic中的一些基本概念

    WebLogic中的一些基本概念   WebLogic 中的基本概念 上周参加了单位组织的WebLogic培训,为了便于自己记忆,培训后,整理梳理了一些WebLogic的资料,会陆续的发出来,下面是一 ...