1.javascript的变量是无类型的(untype)。

2.用var声明的变量是永久性的。所以当你试图用delete来删除其声明的变量时会报错。

3.当试图读取一个未声明的变量时,会报错。

4.当给一个未用var声明的变量赋值时,js会隐式的声明该变量(这个变量会被声明为全局变量,所以最好用var来声明。这一点在局部声明时非常重要)。

5.在函数内部,局部变量的优先级要高于同名的全局变量(相当于隐藏了该同名的全局变量)。

结合4,5两点。我们给出一个列子来说明其重要性。

var part = "global"; //声明一个全局变量

function checkpart()

{

var part = "local"; //声明一个局部变量

document.write(part);

}

checkpart(); //输出local

document.write(part); // 输出global

当你在声明part局部变量时省略了var。这就相当于声明了一个全局变量,即改变了全局变量part的值。下面的两条语句输出的都是local。

6.没有块级作用域。函数中声明所有变量(无论在哪里声明的),在整个函数中他都是有定义的。

var part = "global";

function checkvariable()

{

document.write(part);

}

checkvariable(); //输出global

var part = "global";

function checkvariable()

{

documen.write(part);

var part = "local";

document.write(part);

}

checkvariable();

上述代码第一次输出的不是global,而是undefined。这告诉我们在函数中声明变量时尽量将其集中放在函数的开头。

7.变量的内容

js中数据类型分为两组:基本数据类型和引用类型。数值,布尔值,null和未定义的值属于基本类型。对象,数组,函数属于引用类型(函数也是一种数据类型)。(字符串属于特殊类型)。基本数据类型在内存中具有固定的大小:一个数值占8个字节(在基本类型中最大),一个布尔值占一位。而引用类型具有任意长度,没有固定的大小。无法将其直接与每个相关变量储存在8个字节的内存中。所以变量储存的是这个值的引用(通常引用有两种形式:指针和内存地址)。这两中数据类型具有很大的差别。

var i = 1;

var j = i;

i = 2;

alert(j); //输出1

var i = new Array(1,2,3);

j = i;

i[0] = 2;

alert(j); //输出2,2,3

8.作为属性的变量

js解释器在工作之前会在所有js代码运行之前创建一个全局对象。这个全局对象的属性就是所有的全局变量。同理也会存在一个调用对象。而这个调用对象的属性就是所有的局部变量。一个js解释器可以工作在不同的执行环境中。这些执行环境彼此独立且又相互联系。(执行环境:不同的窗口,框架)。

转载于:https://www.cnblogs.com/chris-oil/archive/2013/05/19/3087425.html

javascript的变量相关推荐

  1. 深入理解JavaScript的变量作用域

    在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整个函数 ...

  2. JavaScript的变量作用域深入理解(转)

    在学习JavaScript的变量作用域之前,我们应当明确几点:  a.JavaScript的变量作用域是基于其特有的作用域链的.  b.JavaScript没有块级作用域.  c.函数中声明的变量在整 ...

  3. (转)用ASP.NET向Javascript传递变量 方法1:

    (转)用ASP.NET向Javascript传递变量 方法1: 用一个隐藏控件,把变量的值给隐藏控件,再用Javascript去找隐藏控件的值 window.document.getElementBy ...

  4. 深入理解JavaScript的变量作用域(转)

    在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整个函数 ...

  5. Javascript的变量作用域居然可以跨越多个函数!

    今天,编写一个JavaScript的代码,是这样子的: function a(){ ... for(i=0;i<abc.length;i++){ ... b(); ... } ... } fun ...

  6. JavaScript通过变量设置对象键[重复]

    本文翻译自:JavaScript set object key by variable [duplicate] This question already has answers here : 这个问 ...

  7. JavaScript:变量提升作用域

    作用域是JavaScript中听上去感觉很简单,其实比较麻烦的一个特性,什么是作用域?我看书籍有一个相对的官方解释:作用域(scope,或译有效范围)就是变量和函数的可访问范围,即作用域控制着变量和函 ...

  8. JavaScript中变量判断是否是数字,判断是否是整数,判断是否是正整数/负整数,判断奇数/偶数的方法

    (1)判断是否是整数  JavaScript中变量判断是否是数字,判断是否是整数,判断是否是正整数/负整数,判断奇数/偶数的方法. (1)判断是否是整数 // 判断整数function isInteg ...

  9. 深圳软件测试培训:JavaScript中变量和作用域

    深圳软件测试培训:JavaScript中变量和作用域 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量不是强制类型的,决定了它只是在特定时间用于保存特定值的一个名字而已. ...

最新文章

  1. ICLR认知科学@AI workshop一览
  2. 《Apache Flink官方文档》 Apache Flink介绍
  3. Quartz 2d绘图
  4. ITK:复制非复合转换NonCompositeTransform
  5. ubuntu下部署mongodb以及设置允许远程连接
  6. 数据查询和业务流分开_TiDB HTAP 助力小红书业务升级
  7. WLAN802.11n新技术详解
  8. OPIE(火狐扩展)-导入导出firefox扩展的所有设置
  9. python openpose
  10. H3C基础配置命令(一)
  11. 英语语法学习 第一章 句子的形成之 结论
  12. 服务器和交换机物理连接_交换机发生网络通信故障怎么解决?
  13. 淘宝代购系统、海外代购系统、代购小程序、APP的开发以及源码PHP前端源码
  14. 庖丁解牛Transformer原理
  15. KNN算法和Kernel KNN算法的区别
  16. 最优传输论文(十二):Extracting Relationships by Multi-Domain Matching论文原理
  17. 拥抱POL正当时,这里有四个故事五个理由
  18. Html .CSS JQUERY (magnifier)实现详情页面特效
  19. erp服务器性能测试,金蝶ERP性能测试经验分享
  20. org.springframework.web.servlet.resource.ResourceHttpRequestHandler cannot be cast to org.springfra

热门文章

  1. python ctypes教程_Python ctypes: Python file object - C FILE * | 易学教程
  2. sql group by having用法_神奇的 SQL,Group By 真扎心,原来是这样!
  3. python日历下拉框_Python版的农历日历Calendar,功能简单
  4. 用css如何写正方体,css正方体实现--(transform练习)
  5. java hashtable排序_java中哈希表中有迭代器模式的实现,可以认为其是顺序表吗?...
  6. ad20如何导入库_一文看懂如何使用(Py)Stan进行贝叶斯推理
  7. Harbor仓库的管理
  8. java 线程不运行时间_java如何设置线程运行时间吗
  9. python登录验证码(基于django框架)
  10. ssh、sftp、scp免密码登录