JavaScript数据类型:
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。
引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。
注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
属性,对象和方法:
JavaScript是一种脚本语言,用于在网页上实现交互和动态效果。在JavaScript中,有三个主要的概念:属性,对象和方法。
1.属性(Property)是对象的特征,它保存了对象的状态和值。属性可以是基本数据类型(如字符串、数字、布尔值)或引用类型(如对象、数组、函数)。对象的属性可以通过点表示法(object.property)或括号表示法(object["property"])来访问。
例如:
var person = {name: "John",age: 30,gender: "male"
};console.log(person.name); // 输出 "John"
console.log(person["age"]); // 输出 30
2.对象(Object)是一种复合数据类型,它是属性的集合。在JavaScript中,几乎所有的东西都是对象,包括数组、函数和日期等。对象可以通过字面量({})或构造函数(new Object())来创建。
例如:
var person = {name: "John",age: 30,gender: "male"
};
3.方法(Method)是对象中的函数。方法是与对象相关联的函数,可以被调用来执行特定的操作。方法可以通过点表示法或括号表示法来调用。
例如:
var person = {name: "John",age: 30,gender: "male",sayHello: function() {console.log("Hello, my name is " + this.name);}
};person.sayHello(); // 输出 "Hello, my name is John"
在JavaScript中,对象中的方法可以访问对象的属性,并使用关键字this
引用当前对象。方法可以用于修改对象的属性值、执行计算和与其他对象进行交互。
函数:
JavaScript函数是一段可重复使用的代码块,用于执行特定的任务或计算。函数使得我们可以将一段代码封装起来,通过给函数传递参数,执行代码并返回结果。
在JavaScript中,函数可以通过函数声明或函数表达式来创建。
- 函数声明(Function Declaration):
function functionName(parameters) {// 执行代码return result;
}
例如:
function addNumbers(a, b) {return a + b;
}console.log(addNumbers(5, 10)); // 输出 15
- 函数表达式(Function Expression):
var functionName = function(parameters) {// 执行代码return result;
};
例如:
var multiplyNumbers = function(a, b) {return a * b;
}console.log(multiplyNumbers(3, 4)); // 输出 12
函数可以接受任意数量的参数,可以执行一系列操作,并且可以返回一个值。函数也可以没有参数或返回值。
在函数中,我们可以使用局部变量,这些变量只在函数内部可见。我们还可以通过参数在函数内部接收外部传入的值。
JavaScript函数也可以作为参数传递给其他函数,或者作为对象的属性(方法)使用。
函数在JavaScript中是一等公民,这意味着它们可以被赋值给变量,存储在数组和对象中,以及作为返回值或参数传递给其他函数。
局部变量和全局变量:
在JavaScript中,var、let和const是用来声明变量的关键字。
- var:在ES5之前,使用var关键字声明变量是常见的方式。它具有函数作用域的特性,意味着变量在声明它的函数内部可见,并且在整个函数体中都可以访问到。
function example() {var x = 10;if (true) {var y = 20; // 在函数体内部可见console.log(x); // 10}console.log(y); // 20
}
example();
console.log(x); // 抛出 ReferenceError
在上述示例中,变量x在函数example内部声明,因此在整个函数体内可见。变量y在if语句块中声明,但由于var是函数作用域,所以if语句块内外都可以访问到。但在函数外部是无法访问x的。
- let:在ES6中引入了let关键字。与var不同,let声明的变量具有块级作用域的特性,意味着变量在声明它的块(花括号)内部可见,并且在该块的外部是不可访问的。
function example() {let x = 10;if (true) {let y = 20; // 在 if 块内部可见console.log(x); // 10}console.log(y); // 抛出 ReferenceError
}
example();
console.log(x); // 抛出 ReferenceError
在上述示例中,变量x和y都是用let关键字声明的。变量x在整个函数体中可见,而变量y仅在if块内部可见。在块的外部,无法访问变量y。
- const:const也是ES6中引入的关键字,用于声明常量。与let不同,const声明的变量是一个常量,一旦赋值后就不能再修改。
function example() {const x = 10;x = 20; // 抛出TypeErrorconsole.log(x);
}
example();
在上述示例中,变量x被声明为常量后,尝试修改其值将会导致TypeError错误。
全局变量和局部变量是基于作用域的概念。
- 全局变量:在函数外部声明的变量是全局变量,它可以在整个代码中被访问到。
var globalVariable = 10;function example() {console.log(globalVariable);
}
example(); // 输出 10
在上述示例中,变量globalVariable是在函数外部声明的,因此它是一个全局变量,可以在函数内部访问到。
- 局部变量:在函数内部声明的变量是局部变量,它只能在声明该变量的函数内部使用。
function example() {var localVariable = 20;console.log(localVariable);
}
example(); // 输出 20
console.log(localVariable); // 抛出 ReferenceError
在上述示例中,变量localVariable是在函数内部声明的,只能在函数内部使用。在函数外部访问局部变量将导致ReferenceError错误。
注:
局部变量:在函数中通过var声明的变量。
全局变量:在函数外通过var声明的变量。
没有声明就使用的变量,默认为全局变量,不论这个变量在哪被使用。