JavaScript中的数据类型
主要有两种类型的语言。首先, 一个是静态类型语言在编译时已经知道每个变量和表达式类型的位置。变量一旦声明为某种数据类型, 就无法保存其他数据类型的值。例如:C, C ++, Java。
// Java(Statically typed)
int x = 5 // variable x is of type int and it will not store any other type.
string y = 'abc' // type string and will only accept string values
其他, 动态类型语言:随着时间的推移, 这些语言可以接收不同的数据类型。例如-Ruby, Python, JavaScript等。
// Javascript(Dynamically typed)
var x = 5; // can store an integer
var name = 'string' ; // can also store a string.
JavaScript是动态类型的(也称为宽松类型的)脚本语言。也就是说, 随着时间的推移, javascript变量可以接收不同的数据类型。数据类型基本上是可以在程序中使用和操纵的数据类型。
最新的ECMAScript(ES6)标准定义了七种数据类型:其中有6种数据类型是Primitive(预定义)。
- 号码:5、6.5、7等
- String:" Hello lsbin"等
- boolean:表示逻辑实体, 并且可以具有两个值:true或false。
- null:此类型只有一个值:空值。
- 未定义:尚未分配值的变量是未定义。
- Object:这是最重要的数据类型, 它构成了现代JavaScript的构建块。我们将在后续文章中详细了解这些数据类型。
JavaScript中的变量:
JavaScript中的变量是保存可重用数据的容器。它是程序中存储的基本单位。
- 可以在程序执行期间更改存储在变量中的值。
- 变量只是赋予存储位置的名称, 对变量执行的所有操作都会影响该存储位置。
- 在JavaScript中, 必须先声明所有变量, 然后才能使用它们。
在ES2015之前, 则仅使用变种关键字, 后跟变量名和分号。以下是在JavaScript中创建变量的语法:
var var_name;
var x;
var_name是变量的名称, 该名称应由用户定义, 并且应唯一。这些类型的名称也称为身份标识。在JavaScript中创建标识符的规则是, 标识符的名称不得为任何预定义的单词(称为关键字), 首字符必须为字母, 下划线(_)或美元符号($) 。后续字符可以是任何字母或数字或下划线或美元符号。
请注意, 在上面的代码示例中, 我们没有为变量分配任何值。我们只是说它们存在。如果你要查看上面的代码示例中每个变量的值, 它将是未定义。
我们可以在声明时初始化变量, 也可以在以后使用它们时对其进行初始化。以下是一些在JavaScript中声明和初始化变量的示例:
// declaring single variable
var name;
// declaring multiple variables
var name, title, num;
// initializng variables
var name = "Harsh";
name = "Rakesh";
Javascript也称为未输入语言。这意味着, 一旦使用关键字var在javascript中创建了变量, 我们就可以在javascript支持的此变量中存储任何类型的值。下面是此示例:
// creating variable to store a number
var num = 5;
// store string in the variable num
num = "lsbin";
与其他编程语言不同, 上面的示例在JavaScript中执行得很好, 没有任何错误。
JavaScript中的变量还可以评估简单的数学表达式并假定其值。
// storing a mathematical expression
var x = 5 + 10 + 1;
console.log(x); // 16
在ES2015之后, 我们现在有了两个新的变量容器:let和const。现在, 我们将一一介绍它们。变量类型让与var有很多相似之处, 但与var不同, 它具有范围限制。要了解有关他们的更多信息, 请访问let vs var。让我们利用let变量:
// let variable
let x; // undefined
let name = 'Mukul';
// can also declare multiple vlaues
let a=1, b=2, c=3;
// assignment
let a = 3;
a = 4; // works same as var.
康斯特是分配给数据的另一种变量类型, 其值不能在脚本中更改, 也不会在脚本中更改。
// const variable
const name = 'Mukul';
name = 'Mayank'; // will give Assignment to constant variable error.
Javascript中的可变范围
变量的范围是程序的一部分, 从中可以直接访问变量。
在JavaScript中, 作用域有两种:
- 全球范围–范围附加到Window的最外层功能。
- 当地范围–正在执行的功能内。
让我们看看下面的代码。我们在全局范围的第一行定义了一个全局变量。然后, 我们在fun()函数内部定义了一个局部变量。
let globalVar = "This is a global variable" ;
function fun() {
let localVar = "This is a local variable" ;
console.log(globalVar);
console.log(localVar);
}
fun();
输出如下:
当我们执行fun()函数时, 输出显示全局和局部变量都可以在函数内部访问, 因为我们可以进行console.log。这表明在函数内部, 我们可以访问全局变量(在函数外部声明)和局部变量(在函数内部声明)。让我们将console.log语句移到函数外部, 并在调用函数后立即将它们放入。
let globalVar = "This is a global variable" ;
function fun() {
let localVar = "This is a local variable" ;
}
fun();
console.log(globalVar);
console.log(localVar);
输出如下:
我们仍然能够看到全局变量的值, 但是对于局部变量console.log会引发错误。这是因为现在console.log语句存在于全局范围中, 在这里它们可以访问全局变量但不能访问局部变量。
此外, 在函数中定义的与全局变量同名的任何变量都将优先于全局变量并对其进行阴影处理。要了解JavaScript中变量作用域的详细信息, 请参阅以下文章:
了解Javascript中的变量范围。