前端开发必备:JavaScript 基础知识(一)

        JavaScript 是前端开发的基石,它赋予网页动态交互的能力,让网页从静态文档转变为充满活力的应用。本文将带你走进 JavaScript 的世界,掌握其核心概念,为你的前端开发之旅奠定坚实基础。

目录

一、认识JavaScript

二、变量与数据类型

let 关键字

const 关键字

变量的作用域

三、 JavaScript 数据类型

基本数据类型

引用数据类型

总结


一、认识JavaScript

JavaScript 是一种基于对象和事件驱动的简单描述性语言。它从服务器端被下载到客户端,由浏览器执行。它可用于 HTML 和 Web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。

其具有的特点如下

  • 一般用来编写客户端的脚本。

  • 主要是用来在 HTML 页面中添加交互行为。

  • 是一种解释性语言,边解释边执行。

那么我们怎么在 HTML 中引入 JavaScript 呢?

与 CSS 相似,它的引入方式有以下三种:

  1. 在 HTML 标签中直接引入,针对一些特别简短的 JavaScript 代码。

  2. 使用 <script> 标签可以将 JavaScript 代码嵌入到 HTML 文档的 <head><body> 里。

  3. 使用外部 JavaScript 文件。将 JavaScript 脚本代码写入一个后缀为 .js 的文件中,通过给 <script> 标签设置 src 属性的方式,引入这个文件。

二、变量与数据类型

let 关键字

在 JavaScript 中,通常使用 let 关键字声明变量,其语法格式为:

let 变量名 = 值

在 JavaScript 中给变量命名应该遵循以下原则:

  1. 变量名由字母、下划线、$ 或数字组成,并且必须由字母、下划线、$ 开头。

  2. 变量名不能命名为系统关键字和保留字

例如:新建一个 index.html 文件,写入以下内容:

<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>文档</title>
  </head>
  <body>
    <script>
      let str = 'Hello JS!'
      let num = 1
      console.log(str) /* 在控制台输出变量 str 的值 */
      console.log(num) /* 在控制台输出变量 num 的值 */
    </script>
  </body>
</html>

 启动 Web 服务,访问预览页面,按下 F12 键打开浏览器开发者工具的控制台,观察结果:

可以看到,两个变量的值输出到了控制台中,在 JavaScript 中,我们可以使用 console.log() 在浏览器开发者工具的控制台中进行输出。

const 关键字

在 JavaScript 中,为我们提供了另一个关键字 const 用于声明一个只读的常量。常量一旦声明,它的值就不能改变。如果我们尝试再次赋值的话,则会引发错误。

示例:

const maxAge = 100
maxAge = 10
console.log(maxAge)

 控制台的输出结果如下:

 既然常量的值不能改变,那么我们在声明时,必须对它进行初始化,不然也会报错。

参考以下示例:

const num

 对于 const 关键字声明的不可改变的变量值,根据变量是基本类型还是引用类型分为两种情况。

基本类型的变量直接存储数据,例如:

const num = 20

这里 num 变量就是基本类型,我们使用的是 const 关键字来声明 num,故赋予变量 num 的值 20 是不可改变的。

引用类型的变量存储数据的引用,而数据是放在数据堆中。比如,用 const 声明一个数组,如果我们尝试去修改数组,那么会报错:

const arr = ["一", "二", "三"]
arr = ["五", "六", "七"]

但是,使用 const 关键字声明的引用类型还是可以通过数组下标去修改值的:

const arr = ['一', '二', '三']
arr[0] = '四'
arr[1] = '五'
arr[2] = '六'

console.log(arr)

控制台的输出结果如下:

这是因为变量 arr 保存的是数组的引用,并不是数组中的值,只要引用的地址不发生改变就不会报错。这就相当于一个房子,它拥有固定的位置,但住在房子里的人不一定固定。

变量的作用域

作用域是变量与函数的可访问范围,在 JavaScript 中,变量的作用域有全局作用域局部作用域两种。

在函数外部声明的变量,即为全局变量。全局变量的作用域针对整个全局,简单来说,就是网页中的所有脚本和函数都能够访问它。

参考以下示例1:

 let str = 'https://www.baidu.com/'
      console.log('函数外部:', str)

      function test() {
        console.log('函数内部:', str)
      }
      test()

控制台的输出结果如下:

可以看到,在函数内部能够访问函数外部声明的变量 str

在函数内声明的变量为局部变量,作用域只在函数内部有效,也只能被函数内部访问。因为局部变量只作用于函数内部,所以不同函数在内部可以使用相同名称的变量;函数开始执行时创建局部变量,函数执行完成后局部变量会自动销毁。

 示例2:

let str = 'https://www.baidu.com/'
      console.log('函数外部:', str)

      function test() {
        let str = 'https://www.taobao.com/'
        console.log('函数内部:', str)
      }
      test()

控制台的输出结果如下:

三、 JavaScript 数据类型

在 JavaScript 中数据类型分为两大类:

  • 基本数据类型:String(字符串)、Number(数字)、Boolean(布尔)、null(空)、undefined(未定义)、BigIntSymbol

  • 引用数据类型:Object(对象)

❓为什么需要这么多种数据类型呢?

  • 不同的数据类型占有的存储空间不同。如果不标识数据类型的话,计算机会给不同的数据类型分配相同的储存空间,这就造成了资源浪费。

  • 不同的数据类型在进行运算的时候,需要进行转换,同类型的数据才能进行计算。比如,两个整型相加(+)是算数运算(1+1=2),两个字符串相加(+)是字符串拼接('1'+''='12')。

❓那么为什么又要分为基本数据类型和引用数据类型呢?

  • 传参方式不同,基本数据类型是值传递,而引用数据类型是地址传递

  • 储存方式不同,基本数据类型是栈存储,而引用数据类型是堆存储

基本数据类型

 新建一个 index.html 文件,在 <script> 标签内写入以下内容:

let a = 5
let b = a
a = a + 1
console.log('a 的值为:', a)
console.log('b 的值为:', b)

 控制台的输出结果如下:

可以看到,输出 a 的值为 6,因为执行了 a = a + 1 的操作;而 b 的值为 5,是因为 a = 5 时,把 5 这个值赋给了 b。 

引用数据类型

新建一个 index.html 文件,在 <script> 标签内写入以下内容:

let a = {} // 创建一个对象
a.name = '小花'
let b = a
a.name = '小蓝'
console.log('对象 a 的 name 属性值为:', a.name)
console.log('对象 b 的 name 属性值为:', b.name)

控制台的输出结果如下:

从上图我们可以看到 a.nameb.name 的输出都是“小蓝”,因为引用类型传递的是地址,所以 a 对象的数据改变,b 对象的数据也会改变。  

我们可以使用 typeof 关键字来判断数据类型,但是它存在以下问题:

  • 无法判断 null

  • 无法判断除了 function 之外的引用类型。

示例:

// 可以判断除了 null 之外的基础类型
console.log(typeof true) // boolean
console.log(typeof 100) // number
console.log(typeof 'abc') // string
console.log(typeof 100n) // bigint
console.log(typeof undefined) // undefined
console.log(typeof Symbol('a')) // symbol

// 无法判断 null
console.log(typeof null) // object

// 无法判断除了 function 之外的引用类型
console.log(typeof function () {}) // function
console.log(typeof []) // object
console.log(typeof {}) // object

 控制台的输出结果如下:

 为了克服 typeof 关键字的缺陷,我们可以使用内置对象 ObjecttoString() 方法实现数据类型的判断,其使用格式为:

Object.prototype.toString.call(变量或值)

 参考以下示例:

console.log(Object.prototype.toString.call(null)) // [object Null]
console.log(Object.prototype.toString.call(function () {})) // [object Function]
console.log(Object.prototype.toString.call([])) // [object Array]
console.log(Object.prototype.toString.call({})) // [object Object]

 控制台的输出结果如下:

可以看到,toString() 方法不仅能够判断 null 的类型,还能够区分不同的引用类型。  

总结

本节实验首先介绍了 JavaScript 的基本概念,然后介绍了声明变量的 letconst 关键字,以及变量的作用域。

接下来介绍了 JavaScript 中的两大类数据类型:

  • 基本数据类型:String(字符串)、Number(数字)、Boolean(布尔)、null(空)、undefined(未定义)、BigIntSymbol

  • 引用数据类型:Object(对象)

希望本文能帮助你开启 JavaScript 学习之旅,在实践中不断探索和进步,最终成为一名 JavaScript 高手!

📕前端开发必备:JavaScript 基础知识(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值