总结分享JavaScript变量和数据类型知识点

1. JavaScript变量 (共分为四个小标题)

1.1 变量的定义

变量是JavaScript中最基本的存储单位,可以用来存储各种数据类型。变量的定义一般使用关键字var,也可以使用let或const。其中,var被广泛使用,let用于块级作用域的变量声明,而const声明常量。下面是变量的定义方式:

//使用var关键字定义变量

var a = 10;

//使用let关键字定义变量

let b = 'hello';

//使用const关键字定义常量

const c = ['apple', 'banana', 'orange'];

1.2 变量的命名规则

变量在命名时需要遵循一定的规则,常见的规则有:

变量名只能包含字母、数字、_或$符号。

变量名第一个字符不能是数字。

变量名不能使用JavaScript保留字。

例如:

//正确的变量命名

var studentName = 'Tom';

var student_age = 18;

var _salary = 2000;

//错误的变量命名

var 2num = 2; //变量名不能以数字开头

var var = 'var'; //变量名不能使用JavaScript关键字

1.3 变量作用域

JavaScript变量的作用域分为全局变量和局部变量。全局变量在整个程序中均可访问,而局部变量只在声明它的函数或语句块中可访问。

//定义全局变量

var globalVar = 10;

function func() {

//定义局部变量

var localVar = 20;

console.log(globalVar); //可以访问全局变量

console.log(localVar); //可以访问局部变量

}

func();

console.log(globalVar); //10

console.log(localVar); //Uncaught ReferenceError: localVar is not defined

1.4 变量提升

JavaScript中变量声明有提升的特性,即变量在声明之前就可以被访问到。这是因为在JavaScript解析执行时,变量声明会被提升到函数或全局作用域的顶部,但是变量的赋值不会被提升。

function func() {

console.log(a); //undefined,变量a被提升了

var a = 10; //变量赋值

console.log(a); //10

}

func();

2. JavaScript数据类型(共分为五个小标题)

2.1 基本数据类型

JavaScript有六种基本数据类型,分别是:

Number(数字类型)

String(字符串类型)

Boolean(布尔类型)

Null(空类型)

Undefined(未定义类型)

Symbol(符号类型,ES6新增)

var num = 10; //Number类型

var str = 'hello'; //String类型

var bool = true; //Boolean类型

var n = null; //Null类型

var und = undefined; //undefined类型

var sym = Symbol('foo'); //Symbol类型

2.2 对象类型

除了基本数据类型外,JavaScript还有一种复杂类型,即对象类型。对象类型可以存储多个键值对的数据,这些数据可以是基本数据类型或其他对象类型。

//定义对象类型

var obj = {

name: 'Tom',

age: 18,

isStudent: true

};

2.3 typeof运算符

typeof运算符可以返回数据类型的字符串表示,它可以应用于任何数据类型,包括基本数据类型和对象类型。

console.log(typeof 10); //"number"

console.log(typeof 'hello'); //"string"

console.log(typeof true); //"boolean"

console.log(typeof null); //"object"

console.log(typeof undefined); //"undefined"

console.log(typeof Symbol('foo')); //"symbol"

console.log(typeof {}); //"object"

console.log(typeof []); //"object"

2.4 强制类型转换

JavaScript中的数据类型转换涉及到两种类型的转换:隐式类型转换和显式类型转换。隐式类型转换是自动发生的,不需要人为干预。而显式类型转换需要通过一些函数或运算符来执行。

console.log(10 + 'hello'); //"10hello",隐式转换

console.log(Number('123')); //123,显式转换

console.log(String(123)); //"123",显式转换

console.log(Boolean(1)); //true,显式转换

2.5 NaN和Infinity

NaN和Infinity是两个特殊的数值,它们属于Number类型。NaN表示“不是数字”,Infinity表示正无穷或负无穷。

console.log(10 / 'foo'); //NaN

console.log(1 / 0); //Infinity

console.log(typeof NaN); //"number"

console.log(typeof Infinity); //"number"

3. 全局变量和全局对象

3.1 全局变量

全局变量是定义在全局作用域中的变量,它可以被程序的任何部分访问到。在JavaScript中,定义全局变量可以使用关键字var,但通常不会这样做,而是直接声明一个变量,这样就会自动成为全局变量。

var globalVar = 10; //全局变量

function func() {

console.log(globalVar); //10,可以访问全局变量

}

func();

3.2 全局对象

JavaScript中有一个全局对象window,它代表整个浏览器窗口。在浏览器中,定义的全局变量和方法都会成为window对象的属性和方法。

var num = 10; //全局变量

function func() {

console.log('hello');

}

console.log(window.num); //10,访问全局变量

window.func(); //"hello",调用全局函数

4. 作用域链和闭包(共分为三个小标题)

4.1 作用域链

在JavaScript中,每个函数都有一个作用域。当函数被调用时,就会创建一个新的作用域,该作用域包含函数内定义的所有变量和函数。

当访问一个变量时,JavaScript会沿着作用域链向上查找该变量。作用域链的顶部是全局作用域,最底部是当前函数作用域。

var num = 10; //全局变量

function outer() {

var num = 20; //局部变量

function inner() {

console.log(num); //20,在当前作用域链中查找变量num

}

inner();

}

outer();

4.2 闭包

闭包是指一个函数可以访问并操作函数外部的变量,即使该函数已经返回了。闭包是一种强大的特性,可以用来创建私有变量或实现高阶函数等功能。

function outer() {

var num = 10; //局部变量

return function inner() {

console.log(num); //可以访问父函数的变量

}

}

var innerFunc = outer();

innerFunc(); //10

4.3 this关键字

this是JavaScript中的一个关键字,它通常指向当前对象。在全局作用域或非严格模式下的函数中,this指向全局对象;而在严格模式下的函数中,this指向undefined。

console.log(this); //Window对象,在全局作用域下

function func() {

console.log(this); //Window对象,在非严格模式下

}

func();

'use strict';

function func() {

console.log(this); //undefined,在严格模式下

}

func();

5. 变量提升和函数提升

5.1 变量提升

JavaScript中的变量声明有提升的特性,即变量可以在声明之前访问到。这是因为在JavaScript解析时,变量声明会被提升到函数或全局作用域的顶部,但是变量的赋值不会被提升。

console.log(num); //undefined,变量被提升了

var num = 10; //变量赋值

5.2 函数提升

只有函数声明有函数提升的特性,即函数可以在声明之前调用。函数表达式没有函数提升的特性,必须在声明之后才能调用。

func(); //直接调用,函数被提升了

function func() {

console.log('hello');

}

var func2 = function() {

console.log('world');

};

func2(); //必须在声明之后才能调用

总结以上内容,比较重要的是JavaScript中的变量定义,包括变量命名规则和变量的作用域;函数提升和变量提升的特性;以及闭包的概念和用法。此外,全局变量和全局对象、数据类型以及类型转换也是需要掌握的知识点。我们要根据实际需求,适时地选择使用不同的变量类型和数据类型,以及了解各种数据类型转换的方法。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。