1707 字
9 分钟
JavaScript01-基础
2023-12-01
2023-12-07

JavaScript基础#

1.JavaScript 是什么(是什么?)

是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。

2.作用(做什么?)

  • 网页特效(监听用户的一些行为让网页作出对应的反馈)
  • 表单验证(针对表单数据的合法性进行判断)
  • 数据交互(获取后台的数据,渲染到前端)
  • 服务端编程(node.js)

3.JavaScript的组成(有什么?)

  • ECMAScript:规定了 js 基础语法核心知识。
  • Web APIs
    • DOM:操作文档,比如对页面元素进行移动、大小、添加删除等操作
    • BOM:操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器等等

JavaScript书写位置#

与 CSS 相同

CSS

  • 行内样式表
  • 内部样式表
  • 外部样式表

JavaScript

  • 行内样式表
  • 内部样式表
  • 外部样式表

内部 JavaScript#

直接写在html文件里,用script标签包住

规范:script标签写在\</body>上面

拓展:alert(‘你好,js’) 页面弹出警告对话框

注意事项:我们将\<script>放在HTML文件的底部附近的原因是浏览器会按照代码在文件中的顺序加载 HTML。如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。因此,将 JavaScript 代码放在 HTML 页面的底部附近通常是最好的策略。

外部 JavaScript#

代码写在以.js结尾的文件里

语法:通过script标签,引入到html页面中。

注意事项:

  1. script 标签中间无需写代码,否则会被忽略!
  2. 外部 JavaScript 会使代码更加有序,更易于复用,且没有了脚本的混合,HTML也会更加易读,因此这是个好的习惯。

内联 JavaScript#

代码写在标签内部

语法:先不做了解

注意:此处作为了解即可,但是后面vue框架会用这种模式

JavaScript 注释#

  • 单行注释
    • 符号://
    • 作用:右边这一行的代码会被忽略
    • 快捷键:ctrl + /
  • 块注释
    • 符号:/* */
    • 作用:在/*和*/之间的所有内容都会被忽略
    • 快捷键:shift + alt + a

JavaScript 结束符#

  • 结束符
    • 作用:使用英文的;代表语句结束
    • 实际情况:实际开发中,可写可不写,浏览器(JavaScript引擎)可以自动推断语句的结束位置
    • 现状:在实际开发中,越来越多的人主张,书写 JavaScript 代码时省略结束符
    • 约定:为了风格统一,结束符要么每句都写,要么每句都不写(按照团队要求)

JavaScript 输入与输出语法#

输出语法#

  • 语法1
document.write('输出的内容')

作用:向 body 内输出内容

注意:如果输出的内容写的是标签,也会被解析成网页元素

  • 语法2
alert('输出的内容')

作用:页面弹出警告框

  • 语法3
console.log('控制台打印')

输入语法#

语法:

prompt('请输入您的姓名:')

作用:显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字

代码执行顺序#

  • 按 HTML 文档流顺序执行 JavaScript 代码
  • alert() 和 prompt() 它们会跳过页面渲染先被执行(目前作为了解,后期讲解详细执行过程)

变量#

声明#

let 变量名

赋值#

变量名 = 值

更新#

变量名 = 值

注意:let 不允许多次声明一个变量

声明多个变量(不推荐)#

let age = 18, uname = 'pink'

let 和 var 的区别#

在较旧的JavaScript,使用关键字var来声明变量,而不是let。

var现在开发中一般不再使用它,只是我们可能再老版程序中看到它。

let为了解决var 的一些问题。

var声明:

  • 可以先使用在声明(不合理)
  • var声明过的变量可以重复声明(不合理)
  • 比如变量提升、全局变量、没有块级作用域等等

常量#

const 变量名 = 值

注意:声明时必须初始化

数组#

声明语法#

let 数组名 = [数据1, 数据2, ..., 数据n]

取值语法#

数组名[索引号]
  • 和其他语言一样从零开始
  • 数组里面可以存储任意类型的数据
  • 数组的长度可以使用其属性获得,和 java 一样,数组名.length

数据类型#

基本数据类型#

  • number 数字型
  • string 字符串型
  • boolean 布尔型
  • undefined 未定义型
  • null 空类型

number - 数字型#

有关于 NaN(Not a Number) 的注意:

  • NaN代表一个计算错误,它是一个不正确的或者一个未定义的数学操作所得到的结果
  • NaN是粘性的,任何对NaN的操作都会返回NaN
  • NaN != NaN

string - 字符串型#

  • 通过单引号(‘’)、双引号(“”)或反引号(`)包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号

字符串 + 变量写法

  • 写法1(较为麻烦)
let name = wang
let age = 21
document.write('大家好,我叫’+ name + ',今年' +age +'岁')
  • 写法2(较为简单)
let name = wang
let age = 21
document.write(`大家好,我叫${name},今年${age}岁`)

写法2注意事项:

  • “反引号包裹
  • 拼接变量时,用 ${}包裹变量

boolean - 布尔型#

  • true
  • false

undefined - 未定义型#

只声明变量,不赋值的情况下,变量的默认值为undefined,一般很少直接为某个变量赋值为undefined。

null - 空类型#

如果一个变量里面确定存放的是对象,如果还没准备好对象,可以放个null

Javascript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值

null 和 undefined 区别:

  • undefined 表示没有赋值
  • null 表示赋值了,但是内容为空

typeof - 检测数据类型#

typeof运算符可以返回被检测的数据类型。它支持两种语法形式

  1. 作为运算符:typeof x(常用的写法)
  2. 函数形式:typeof(x)

换言之,有括号和没有括号,得到的结果是一样的,所以我们直接使用运算符的写法。

类型转换#

1.隐式转换

某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。

规则:

    • 号两边只要有一个是字符串,都会把另外一个转成字符串
  • 除了 + 以外的算术运算符比如 - * / 等都会把数据转成数字类型

缺点:

  • 转换类型不明确,靠经验才能总结

小技巧:

  • +号作为正号解析可以转换成数字型
  • 任何数据和字符串相加结果都是字符串

2.显示转换

  • 转换为数字型
    • Number(数据)
    • parseInt(数据)
    • parseFloat(数据)

引用数据类型#

  • object 对象