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页面中。
注意事项:
- script 标签中间无需写代码,否则会被忽略!
- 外部 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 = wanglet age = 21document.write('大家好,我叫’+ name + ',今年' +age +'岁')- 写法2(较为简单)
let name = wanglet age = 21document.write(`大家好,我叫${name},今年${age}岁`)写法2注意事项:
- “反引号包裹
- 拼接变量时,用 ${}包裹变量
boolean - 布尔型
- true
- false
undefined - 未定义型
只声明变量,不赋值的情况下,变量的默认值为undefined,一般很少直接为某个变量赋值为undefined。
null - 空类型
如果一个变量里面确定存放的是对象,如果还没准备好对象,可以放个null
Javascript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值
null 和 undefined 区别:
- undefined 表示没有赋值
- null 表示赋值了,但是内容为空
typeof - 检测数据类型
typeof运算符可以返回被检测的数据类型。它支持两种语法形式
- 作为运算符:typeof x(常用的写法)
- 函数形式:typeof(x)
换言之,有括号和没有括号,得到的结果是一样的,所以我们直接使用运算符的写法。
类型转换
1.隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
规则:
-
- 号两边只要有一个是字符串,都会把另外一个转成字符串
- 除了 + 以外的算术运算符比如 - * / 等都会把数据转成数字类型
缺点:
- 转换类型不明确,靠经验才能总结
小技巧:
- +号作为正号解析可以转换成数字型
- 任何数据和字符串相加结果都是字符串
2.显示转换
- 转换为数字型
- Number(数据)
- parseInt(数据)
- parseFloat(数据)
引用数据类型
- object 对象