JavaScript基本概念之变量与数据类型

您所在的位置:网站首页 javascript中变量的数据类型是在上下文运行时决定的吗 JavaScript基本概念之变量与数据类型

JavaScript基本概念之变量与数据类型

2022-08-21 20:15| 来源: 网络整理| 查看: 265

变量 变量定义变量的作用域 全局作用域名字空间的概念局部作用域常量 数据类型 基本数据类型 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