javascript的变量
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的变量相关推荐
- 深入理解JavaScript的变量作用域
在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整个函数 ...
- JavaScript的变量作用域深入理解(转)
在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整 ...
- (转)用ASP.NET向Javascript传递变量 方法1:
(转)用ASP.NET向Javascript传递变量 方法1: 用一个隐藏控件,把变量的值给隐藏控件,再用Javascript去找隐藏控件的值 window.document.getElementBy ...
- 深入理解JavaScript的变量作用域(转)
在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整个函数 ...
- Javascript的变量作用域居然可以跨越多个函数!
今天,编写一个JavaScript的代码,是这样子的: function a(){ ... for(i=0;i<abc.length;i++){ ... b(); ... } ... } fun ...
- JavaScript通过变量设置对象键[重复]
本文翻译自:JavaScript set object key by variable [duplicate] This question already has answers here : 这个问 ...
- JavaScript:变量提升作用域
作用域是JavaScript中听上去感觉很简单,其实比较麻烦的一个特性,什么是作用域?我看书籍有一个相对的官方解释:作用域(scope,或译有效范围)就是变量和函数的可访问范围,即作用域控制着变量和函 ...
- JavaScript中变量判断是否是数字,判断是否是整数,判断是否是正整数/负整数,判断奇数/偶数的方法
(1)判断是否是整数 JavaScript中变量判断是否是数字,判断是否是整数,判断是否是正整数/负整数,判断奇数/偶数的方法. (1)判断是否是整数 // 判断整数function isInteg ...
- 深圳软件测试培训:JavaScript中变量和作用域
深圳软件测试培训:JavaScript中变量和作用域 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量不是强制类型的,决定了它只是在特定时间用于保存特定值的一个名字而已. ...
最新文章
- ICLR认知科学@AI workshop一览
- 《Apache Flink官方文档》 Apache Flink介绍
- Quartz 2d绘图
- ITK:复制非复合转换NonCompositeTransform
- ubuntu下部署mongodb以及设置允许远程连接
- 数据查询和业务流分开_TiDB HTAP 助力小红书业务升级
- WLAN802.11n新技术详解
- OPIE(火狐扩展)-导入导出firefox扩展的所有设置
- python openpose
- H3C基础配置命令(一)
- 英语语法学习 第一章 句子的形成之 结论
- 服务器和交换机物理连接_交换机发生网络通信故障怎么解决?
- 淘宝代购系统、海外代购系统、代购小程序、APP的开发以及源码PHP前端源码
- 庖丁解牛Transformer原理
- KNN算法和Kernel KNN算法的区别
- 最优传输论文(十二):Extracting Relationships by Multi-Domain Matching论文原理
- 拥抱POL正当时,这里有四个故事五个理由
- Html .CSS JQUERY (magnifier)实现详情页面特效
- erp服务器性能测试,金蝶ERP性能测试经验分享
- org.springframework.web.servlet.resource.ResourceHttpRequestHandler cannot be cast to org.springfra
热门文章
- python ctypes教程_Python ctypes: Python file object - C FILE * | 易学教程
- sql group by having用法_神奇的 SQL,Group By 真扎心,原来是这样!
- python日历下拉框_Python版的农历日历Calendar,功能简单
- 用css如何写正方体,css正方体实现--(transform练习)
- java hashtable排序_java中哈希表中有迭代器模式的实现,可以认为其是顺序表吗?...
- ad20如何导入库_一文看懂如何使用(Py)Stan进行贝叶斯推理
- Harbor仓库的管理
- java 线程不运行时间_java如何设置线程运行时间吗
- python登录验证码(基于django框架)
- ssh、sftp、scp免密码登录