5种简单数据类型(基本数据类型)

undefined  null  boolean  number  string (还有一种复杂的数据类型:object)

变量的两种不同的数据类型:基本类型(简单数据段)、引用类型(可能由多个值构成对象)

1、基本类型

var num1 = 5;
var num2 = num1;

num1与num2完全独立,不会相互影响

 

2、引用类型——按引用访问、保存在内存中的对象(js不允许直接访问内存

var person1 = new object();
var person2 = person1;

person1和person2实际引用一个对象,互相影响

访问变量有按值和按引用两种方式,而参数只能按值传递

function addTen(num){
num+=10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //
alert(result); //

在函数内部重写obj时,变量引用的局部对象,函数执行完立即销毁

function setName(obj){
obj.name = "Ni";
obj = new Object();
obj.name = "Ge";
} var person = new Object();
setName(person);
alert(person.name); //"Ni"

typeof和instanceof

typeof操作符返回数据类型(返回字符串):undefined,boolean,string,number,object,function

var s = "Ni";
var b = true;
var i = 22;
var u = null;
var o = new Object();
var n;
var person = new Object();

typeof s      //string

typeof b      //boolean

typeof i      //number

typeof u     //object

typeof o     //object

typeof n     //undefined

person instanceof Object //true

pattern instanceof RegExp //true

执行环境及作用域

1、全局执行环境: window对象

全局执行环境的变量对象始终都是作用链域中的最后一个对象

2、执行环境: 每个函数都有自己的执行环境,执行环境定义了变量或函数有权访问的其他数据

3、作用域链的用途:代码在一个环境中执行时,创建对象的一个作用域链,保证有序

var color = "blue";
function changeColor(){
if(color == "blue"){
color = "red";
}else{
color = ""blue;
}
}

函数changeColor()的作用域链包含两个对象:自己的变量对象arguments,全局环境变量对象color

var color = "blue";
function changeColor(){
var anotherColor = "red";
function swapColors(){
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
//这里可以访问color,anotherColor,tempColor
} //这里可以访问color,anotherColor
}//这里可以访问color

4、没有块级作用域

由if,for语句创建的变量i即使在for循环结束后,也依旧存在于循环外部的执行环境中

5、var声明的是局部变量,不加var是全局变量。如果局部环境中存在同名标识符,就不会使用位于父环境中的标识符

javascript变量的更多相关文章

  1. javascript变量的作用域

    javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象  讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...

  2. JavaScript 变量声明提前

    <JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...

  3. JavaScript 变量

    一,JavaScript 变量(存储信息的容器) 与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y). 变量可以使用短名称(比如 x 和 y),也可以使用描 ...

  4. javascript变量声明 及作用域

    javascript变量声明提升(hoisting) http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 java ...

  5. JavaScript 变量作用域

    一. 变量声明 变量用var关键字来声明,如下所示: 变量在未声明的情况下被初始化,会被添加到全局环境. JavaScript执行代码时,会创建一个上下文执行环境,全局环境是最外围的环境.每个函数在被 ...

  6. 【转】javascript变量声明 及作用域

    javascript变量声明提升(hoisting) javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 先看 ...

  7. JavaScript变量和数据类型

    变量 变量就是一个元素,类似于数学中的概念,用来指定表示一个对象.在JavaScript中,用来指定变量的关键字为var.当声明新变量时,可以使用关键词 "new" 来声明其类型 ...

  8. 回归基础: JavaScript 变量提升

    from me: javascript的变量声明具有hoisting机制,它是JavaScript一个基础的知识点,也是一个比较容易犯错的点,平时在开发中,大大小小的项目都会遇到. 它是JavaScr ...

  9. JavaScript - 变量,作用域,内存

    JavaScript 变量可以用来保存两种类型的值:基本类型值和应用类型值.基本类型的值源自以下5种基本数据类型:Undefined.Null.Bollean.Number和String. 所有变量都 ...

  10. 六天玩转javascript:javascript变量与表达式(2)

    本系列内容为本人平时项目实践和参照MDN,MSDN,<javascript语言精粹>,<Effective Javascript>等资料,并且整理自己EverNote的日常积累 ...

随机推荐

  1. [安卓开发]App Widget开发入门指导

    本节所要讲的主要内容包括Android桌面小部件.App Widget的开发入门指导,并通过一个简单实例的形式来直观的讲解App Widget. 一.Widget .App Widget .Web A ...

  2. [置顶] Java编程笔试题之一 ----文件操作

    题目:给定一个文件和一个字符串,判断文件是否包含该字符串,如果包含,请打印出包含该字符串的行号以及该行的全部内容. 思路: ①使用缓冲流(BufferedReader)读取文件,定义初始行号为0.   ...

  3. iOS开发:AVPlayer实现流音频边播边存

    1. AVPlayer简介 AVPlayer存在于AVFoundation中,可以播放视频和音频,可以理解为一个随身听 AVPlayer的关联类: AVAsset:一个抽象类,不能直接使用,代表一个要 ...

  4. tcp_tw_recycle和tcp_timestamps的文章汇总

        临近年关,人会变得浮躁,期间写的代码可谓乱七八糟.不过出来混始终是要还的,这不最近就发现一个PHP脚本时常连不上服务器. 遇到这类问题,我习惯于先用strace命令跟踪了一下看看: shell ...

  5. [Effective C++ --008]别让异常逃离析构函数

    这章非常容易理解:因为C++并不禁止析构函数吐出异常,只是不鼓励这样做而已. 一.原因 假设我们有10个装着鸡蛋的容器,而且现在我们还想着把它在析构函数打烂. class Egg { public : ...

  6. Jordan Lecture Note-3: 梯度投影法

    Jordan Lecture Note-3:梯度投影法 在这一节,我们介绍如何用梯度投影法来解如下的优化问题: \begin{align} \mathop{\min}&\quad f(x)\n ...

  7. Routing and controllers

    Routing and controllers We will build a very simple inventory system to display our album collection ...

  8. GitHub帮助文档翻译2——contribution

    工欲善其事必先利其器 ,都不知道 GitHub到底是什么,还怎么玩?因为总是会读了第一句就忘了下一句,形成不了感觉,所以希望把读GitHub的帮助文档都翻译出来,总是看大段大段的东西,谁都会懵圈的.希 ...

  9. ruby 把字符串转为正则匹配表达式

    需求 函数,需要通过参数传递字符串,用来做正则匹配 reg = '[0-9]+' def func(str, reg) str.scan(reg) end 由于 reg 在其它地方定义, reg 是字 ...

  10. 关于python使用list出现乱码的解决

    昨天在敲python的一个小实例的时候,用到了readlines()这个函数,但是将文件读出来的时候是乱码,也并不是完全乱码,只是中文出现了乱码,数字还是显示正常的,同时也不报错.源码以及文件截图如下 ...