JavaScript基本概念之变量与数据类型 |
您所在的位置:网站首页 › javascript中变量的数据类型是在上下文运行时决定的吗 › JavaScript基本概念之变量与数据类型 |
变量
变量定义变量的作用域
全局作用域名字空间的概念局部作用域常量 数据类型
基本数据类型
Undefined类型Null类型Number类型Number类型的NaN字符串类型 引用类型
Object类型Array类型Date类型RegExp类型Function类型基本包装类型
变量
变量定义
ECMAScript的变量是松散类型,也就是说可以用来保存任何类型的数据。每个变量仅仅是一个用于保存值的占位符。 我们通过var操作符来声明一个变量:var message; var message = "hi"; message = 100; // 有效,但不推荐我们不建议修改变量保存值的类型。 变量的作用域JavaScript中用var申明的变量是有作用域的。 1. 如果变量在函数内部申明,则该变量的作用域为整个函数体,在函数外不可引用(会报ReferenceError) 2. 由于函数可以嵌套,内部函数可以访问外部函数定义的变量,反过来不可以。 变量提升:JS函数定义会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部 'use strict'; function foo() { var x = 'Hello, ' + y;//这里不会报错,因为y在后面有申明。但是此时y为undefined。 alert(x); var y = 'Bob'; } foo();我们要严格遵守:在函数内部首先申明所有变量。 常见的做法是用一个var申明函数内的所有变量,用逗号隔开: function foo() { var x = 1, // x初始化为1 y = x + 1, // y初始化为2 z, i; // z和i为undefined // 其他语句: for (i=0; i说明JS只有一个全局作用域。 名字空间的概念问题:因为全局变量都会绑定到window上面。而不同的JavaScript文件如果使用了相同的全局变量,或者定义了相同名字的顶层函数,都可能会造成命名冲突,而且很难察觉。 解决办法:我们可以把自己的所有变量和函数全部绑定到一个全局变量当中。 // 唯一的全局变量MYAPP: var MYAPP = {}; // 其他变量: MYAPP.name = 'myapp'; MYAPP.version = 1.0; // 其他函数: MYAPP.foo = function () { return 'foo'; };而MYAPP就是一个名字空间,可以大大减少全局变量的冲突。(比如JQuery,underscore) 局部作用域需要注意的是,for循环等语句是无法定义具有局部作用域的变量的(也就是说没有块级作用域)。 function foo() { for (var i=0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |