CMAScript变量包含两种不同数据类型的值:
基本类型值:简单的数据段;引用类型值:可能有多个值构成的对象。
5种基本类型:Undefined,Null,Bollean,Number,String;
基本类型是按值访问的,因为可以操作保存在变量中额实际的值;
引用类型:引用类型是保存在内存中的对象,js中不能直接访问内存中的位置,操作的对象,实际上是在操作对象的引用,为对象添加属性时,操作的是实际的对象;
动态属性
基本类型不能添加属性和方法;引用类型可以添加属性和方法;
复制变量值
 基本类型复制:相当于重新重新创建一个新值,这两个变量可以参加任何操作互不影响
      var num1 = 5;
      var num2 = num1;
      alert(num2);
引用类型复制:复制的是一个指针,指向堆中的一个对象,复制结束后,两个指针都指向同一个对象,改变其中一个变量,另一个变量也会改变   
      var obj1 = new Object();
      var obj2 = obj1;
      obj1.name = "xiaoming";
      alert(obj2.name)
传递参数
基本类型按基本类型复制传递(被传递的值会被复制给局部变量,就是arguments对象中的一个元素),
function addTen(num){
         num += 10;
         return num;
      }
      var count =20;
      var result = addTen(count);
      alert(count)
      alert(result)
引用类型按引用类型复制传递(把内存中的地址复制给局部变量)
 function setName(obj){
        obj.name = "xiaoming";
        obj = new Object(); //当在函数内部重写obj时,这个变量的引用就是一个局         部对象了;局部对象在函数执行完毕后会立即销毁;
        obj.name = "G"
      }
      var person = new Object();
      setName(person);
      alert(person.name)
 检测类型
typeof 操作符是确定一个变量是字符串,数字,布尔值,还是undefined,如果变量的值是一个对象或null,则typeof会返回object;
instanceof检测引用类型是一个什么类型的对象;
如果变量是给定的引用类型的实例,那个instanceof操作符就会返回true;如果是基本类型会返回false;
所有引用类型的值都是Object的实例
执行环境与作用域
  延长作用域链
     两种方法:try-catch语句中的catch块;with语句;  
               
使用 try…catch…finally 执行例外处理
  在JavaScript中,我们使用try…catch…finally语句来执行例外处理,即通过它来捕捉错误发生后导致的例外或者执行throw语句产生的例外。它的基本语法如下:

 try {

  // 此处是可能产生例外的语句

  } catch(error) {

  // 此处是负责例外处理的语句

  } finally {

  // 此处是出口语句

  }
3)举例  
<script language="javascript">  
<!--  
function Lakers() {  
       this.name = "kobe bryant";  
       this.age = "28";  
       this.gender = "boy";  
}  
var people=new Lakers();  
with(people)  
{  
       var str = "姓名: " + name + "<br>";  
       str += "年龄:" + age + "<br>";  
       str += "性别:" + gender;  
       document.write(str);  
}  
//-->  
</script>  
  没有块级作用域
if,for,while,语句中声明的变量会将变量添加到当前的执行环境
  for(var i = 0;i<10;i++){
           var a=1
       }
       alert(a);
1.使用var声明的变量会自动添加到 最接近的环境中
2.查询标识符:从作用域链的前端开始,向上逐级查询直到找到需要的标识符(变量)
 
 
 
 
 
 
 
 
 
 
 
 

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. 西门子Prodave5.5使用说明及VC示例

    西门子PLC的通信协议主要是PPI.MPI.Profibus.CP243/CP343/CP443 网络协议,prodave是早期完成的程序接口,除了网络协议外其它的主要协议都支持,SoftNet是西门 ...

  2. Wpf DatePicker 水印修改为中文

    效果图: 在App.cs添加如下代码: protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); Event ...

  3. 解决: maven编译项目报“非法字符: \65279 ”错误

    打包maven项目的时候,出现异常: [INFO] ------------------------------------------------------------------------ [ ...

  4. Observer(观察者)-对象行为型模式

    1.意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 2.别名 依赖(Depenents),发布-订阅(Publish-subscribe ...

  5. modelsim搭建uvm环境及实例

    Modelsim SE-64 10.2c 自带编译好的uvm-1.1d 脚本new_run.do set UVM_DPI_HOME C:/modeltech64_10.2c/uvm-1.1d/win6 ...

  6. Appium移动自动化测试之安装Appium

    第一次学习appium,希望此安装教程可以帮助初学者,共同学习. Appium官网介绍:Appium是与本地,使用开源自动化测试框架, 混合和移动Web应用程序. 它驱动iOS和Android应用使用 ...

  7. 解决UBUNTU update KEY错误的问题

    114down voteaccepted Run the following in your terminal, sudo apt-key adv --keyserver keyserver.ubun ...

  8. jQuery 的属性

    一.显示和隐藏的属性  hide(隐藏),show(显示) 下面是例子 <script type="text/javascript"> $(document).read ...

  9. ios pod库更新到1.0或1.0.1之正确修改podfile文件

    今天看到cocopods都更新到1.0.1了,之前什么时候更新到的1.0都没发现,刚刚更新一下之后,立马出现了一大堆的错误. 如果没有更新的话,建议不要更新!!!书写麻烦了! 现在记录如何一步一步去除 ...

  10. jQuery Mobile 网格布局

    jQuery Mobile 布局网格 jQuery Mobile 提供了一套基于 CSS 的列布局方案.不过,一般不推荐在移动设备上使用列布局,这是由于移动设备的屏幕宽度所限. 但是有时你需要定位更小 ...