数据类型和语法基础

本文详细介绍了JavaScript编程中的语句结构、变量声明(包括let、const)、常量区别、注释、作用域规则、数据类型(包括数值、字符串、布尔、对象等)以及变量提升和字面量的概念,为初学者提供了JavaScript基础知识的概览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语句

类似于文章,JavaScript程序也是由语句组成的。跟文章不同的是,JavaScript中的语句以分号结尾,且区分大小写,一个基本的js(JavaScript的简称)语句通常如下所示

let a = 10;

该语句由如下5部分组成

  • 关键字let,下文会详细介绍
  • 变量a,可以用于存储数据
  • 运算符=,请注意这个=跟数学中的=不同,前者为赋值运算符,后者则表示数值上的相等
  • 数字10,跟数学中的10意思相同
  • ;,与Java类似,js中的语句也是以分号结尾,但js中的分号可以省略(通常不建议省略)

上述5部分共同组成了一个js语句,该语句的作用是将10赋给名为a的变量

注释

注释是程序中进行说明的部分,它不是必要的,也不会影响程序的运行,但会有助于他人和自己阅读代码。(你也可以用注释搞一些好玩的图案,当然只是为了好玩)

js中有两种注释,如下所示

// 我是注释,祝你开心
/* 
	我是注释,祝你快乐
*/
  • 注释1,以**//**开始,到行末结束,通常用来作单行注释
  • 注释2,以**/*开始,以*/**结束,通常用来作多行注释

注意,注释不能嵌套使用,即如下形式

/* 你好,我是一个/* 错误 */ 的注释 */

声明

变量

可以在程序中使用变量作为值的名称,这个象征值的名称就是标识符,js标识符通常以**字母(a-z、A-Z)、下划线(_)和美元符号($)**开头,后面可以紧跟多个字母、数字、下划线,通常标识符需要做到见名知意。因为js区分大小写,所以js中标识符a和标识符A是不一样,这点请注意

声明变量和常量

有以下两种方式可以声明变量,一种方式声明常量,为了方便,我们把它放到这进行叙述

使用var关键字声明变量

var a = 10;

这条语句声明一个名为a的变量,并把它的值初始化为10。当然你也可以只声明变量,而不对它进行初始化,如下所示

var a;

这条语句只声明了一个名为a的变量,注意,一个变量如果未初始化便被使用,它的值为undefined

使用let关键字声明

let b = 10;

这条语句声明了一个名为b的变量,并把它的值初始化为10。

使用const关键字声明常量

const c = 10;

这条语句声明了一个常量c,并把它的值初始化为10,请注意,常量跟变量的名不能相同。

常量与变量的不同

  • 常量在初始化,就不能对其值进行更改
  • 变量在初始化后,还可以对其进行二次赋值,其值为最后一次赋的值

如下所示

const a = 10;
a = 20; // 错误,因为常量初始化后就不能再次赋值
var b = 20;
b = 30; // 正确,b的值为30

变量的作用域

一个变量通常属于以下作用域中的一个

  • 全局范围,以脚本模式运行的js代码的默认作用域
  • 模块范围,以模块模式运行的默认作用域
  • 函数内,在函数内创建的变量的作用域
  • 块内,在块内创建的变量的作用域,该类型通常用let或const关键字声明

当你在函数外声明变量时,它的作用域就是全局范围,该变量被称为全局变量,它可以在当前代码文件的任意地方使用,例如

var a = 10;

function theA() {
   console.log(a); // 这个a即上文声明的a,该语句会在控制台输出10 
}

当你在块内声明变量时,该变量则只在创建它的块中有效,如下所示

if (true) {
    const a = 10;
    console.log(a); // 控制台输出10
}

console.log(a); // 错误,a并没有被声明

请注意,var关键字并不能声明块变量,它只能声明全局变量或者局部变量

if (true) {
    var a= 10;
}

console.log(a); // 正确,输出10

变量提升

var关键字声明的变量是可以被提升的,即使你使用它的时候,它并未被声明

console.log(a === undefined); // 控制台输出true
var a; // 如果把这行去掉,将会报错

虽然变量是可以被提升的,但它的值并不会被提升

console.log(a); // 变量并未被初始化,输出undefined
var a = 10;

数据类型

js有八种数据类型

数据类型说明
Boolean值为true or false,即逻辑值
null表示空值,即啥也没有
undefined变量未被初始化时的值
Number数字值,表示整数或者浮点数
BigInt任意精度的整数
String字符串,与python类似,js中的字符串使用双引号或者单引号括起来
Symbol用来表示唯一且不可变的值
Object通常用来表示现实世界事务的抽象模型

数据类型转换

js是动态语言,因此您在声明变量时不必像Java一样标明变量的数据类型,在脚本执行期间,js也会根据需要自动进行类型转换

例如以下语句

var a = 10; // 此时a的数据类型为Number
a = "大大怪将军"; // 此时a的数据类型为String

利用这种特性,我们可以使用**+**运算符连接字符串和数字

var a = 10 + "大大怪将军"; // 此时a为String类型,值为"10大大怪将军"

但请注意,其他运算符并不会进行这样的操作,当两边都是字符串类型的数字;或者一边是字符串类型的数字,另一边是数字类型的数字时,会进行数学运算

var a = "100" - "10"; // a的类型为Number,值为90

你也可以使用以下两个方法,将字符串类型的数字转换为数字类型的数字

  • parseInt()
  • parseFloat()

字面量

字面量即js中的值,请注意他们跟变量的区别,字面量是固定的

数组字面量

数组字面量是用**[]括起来的一个或多个元素的列表,每个元素之间用,分割,最后一个元素后面可以没有,**

["zhangguoqiang", "lubo"] //一个包含两个元素的数组字面量

数组字面量中额外的逗号

const names = ["zhangguoqiang", , "lubo"];

请问,数组字面量有几个元素?

我们可以在控制台里输出一下看看,在控制台里输入names.length,我们会发现一个奇怪的现象,names数组的长度为3。这是因为js会把两个逗号之间的元素初始化为undefined,但它实际与undefined还是有些不同的,请注意js会忽略每行最后一个元素后面的逗号

const names = ["zhang", "guo", "qiang",]; // 数组长度为3

const names1 = ["zhang",
               "guo",
               "qiang",]; // 数组长度为3

布尔字面量

布尔字面量即truefalse

数字字面量

js支持不同进制的整数和十进制的浮点数,请注意js中的数字是没有符号的,那我们该如何表示负数呢?答案很简单,使用-就可以以,例如-123,js会把它解释为应用了-运算符的数字(实际上跟负数差不多了)

整数字面量

js中的整数支持十进制,八进制,十六进制,二进制,以下是各种进制的区别

进制说明
十进制一串没有前导0的数字(就是我们现实中最常见的数字)
八进制前缀为0o或0O,后面跟一串1到7之间的数字
十六进制前缀为0x或0X,其后的序列由数字1到9,字母a-f(A-F)组成,字母a-f分别表示10-15
二进制前缀为0b或0B,其后跟一串1到2组成的数字
注意,整数字面量可以后跟n,表示它是一个BigInt类型的整数

浮点字面量

一个浮点数包含以下部分

  • 一个无符号十进制整数
  • 一个小数点
  • 另一个无符号十进制整数
  • 指数部分

指数部分由e或E开头,其后跟一个带符号的整数(也可以不带),请注意,无论怎样表示,小数点部是必不可缺的,且小数点后应至少有一位数字,带e的其实就是科学计数法

.23E10; //正确
1.23E+10; //正确
1.E231; //错误
1.23; // 正确

对象字面量

一个对象字面量通常用{}括起来,其中包含一对或多对属性(以键值对的形式存储),每对属性之间用**,**分割,属性可以是任意类型,甚至是函数

var people = {
	name: "张国强",
	word: "我是个人",
	age: 12,
	destination: function () {
		console.log("星辰大海");
	},
}

访问对象属性可以用.或者[],通常用.

people.name
people[name]

正则表达式字面量

正则表达式字面量用//包裹起来

const re = /ab+c/;

字符串字面量

字符串字面量由单引号或者双引号括起来

"星辰大海";
'星辰大海';
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值