JavaScript 基础第一天

  1. JavaScript是一种运行在浏览器的编程语言,可实现人机交互效果
  2. 网页特效 (监听用户行为让网页作出对应反馈)
  3. 表单验证 (针对表单数据的合法性进行判断)
  4. 数据交互 (获取后台数据, 渲染到前端)
  5. 服务端编程 (node.js)

JavaScript的组成:

  1. ECMAScript (基础语法 )、Web APIs (DOM、BOM)
  2. ECMAScript: 规定了js基础语法核心知识 比如:变量、分支语句、循环语句、对象等等
  3. DOM 操作文档,比如对页面元素进行移动、大小、添加删除等操作
  4. BOM 操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器等等
  5. 权威网站:MDN

JavaScript 书写位置:

内部 JS:

  1. 直接写在html文件里,用script标签包住
  2. 将script放在HTML文件底部的原因是浏览器会按照代码在文件中的顺序加载HTML
  3. 如果先加载的JS修改下方的HTML,那么它可能由于HTML尚未被加载而失效
  4. 因此,将JSt代码放在HTML的底部通常是最好的策略
1
2
3
4
5
<body>
<script>
document.write('Hello World')
</script>
</body>

外部 JS:

  1. 代码写在以.js结尾的文件里, 通过script标签引入到html中
  2. script标签中间无需写代码,否则会被忽略
  3. 外部JS会使代码更加有序,更易于复用,没了脚本的混合,HTML会更加易读
1
<script src="JS.js"></script>

内联 JS:

  1. 代码写在标签内部, 了解即可,后面vue框架会用这种模式
1
<button onclick="alert('你好')">请点击我</button>

JavaScript 注释:

单行注释:

1
// 单行注释 ctrl + /

块注释:

1
/* 块注释 Shift+Alt+A */ 

JavaScript 结束符:

  1. 代表语句结束、英文分号 ; 、可写可不写
  2. 换行符会识别成结束符, 所以一个完整语句,不要手动换行
  3. 为了风格统一,要么都写,要么都不写

JavaScript 输入 输出语法:

  1. 人和计算机打交道的规则约定,程序员操控计算机,需要计算机能看懂
  2. 输出和输入可理解为人和计算机交互,用户通过键盘、鼠标向计算机输入信息,计算机处理后再展示结果给用户 ,这便是一次输入和输出的过程

输入语法:

  1. 显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字
1
prompt('我是输入语法')

输出语法:

  1. 向body内输出内容, 输出内容写的是html标签,会被解析成网页元素
1
document.write('<h2>我是输出</h2>')

页面弹出警告对话框:

1
alert('我是警告对话框')

控制台输出语法,开发调试使用:

1
console.log('我是控制台输出')

字面量:

  1. 在计算机科学中,字面量 (literal) 是在计算机中描述事/物
  2. 我们工资是:100 此时100就是 数字字面量 ‘你好啊’ 字符串字面量
  3. 还有 [] 数组字面量 {} 对象字面量 等等…

变量是什么?

  1. 计算机中用来存储数据的“容器”,简单理解就是一个个的盒子,可以让计算机变得有记忆
  2. 用来存放数据,变量指的是容器而不是数据

变量的基本使用:

  1. 变量通过 let 来声明 通过 = 赋值

  2. 变量通过变量名来获得里面的数据``, 可同时声明多个变量

声明变量:

  1. 使用变量,首先创建变量 (声明变量)
  2. 声明变量有两部分构成:声明关键字、变量名 (标识)
  3. let 即关键字 (let: 允许、许可、让、要),关键字是系统提供专门用来声明变量的词语

变量赋值:

  1. 注意:是通过变量名来获得变量里面的数据
  2. 定义一个变量后,就能初始化它 (赋值) 在变量名之后跟上一个“=”,然后是数值
  3. 也可以声明变量的时候同时给变量初始化
1
let Number = 10 // Number变量名称,也叫标识符

更新变量:

  1. 变量赋值后,可以通过一个不同的值来更新它
  2. let 不允许多次声明一个变量
1
2
3
let Number = 10
Number = 20
alert(Number) // 输出结果为20

声明多个变量:

1
let Number = 10, uname = '你好'

交换变量的值:

  1. 使用一个临时变量做中间存储

  2. 声明一个临时变量 temp

  3. 把num1的值赋值给 temp

  4. 把num2的值赋值给num1

  5. 把temp的值给num2

1
2
3
4
5
6
7
8
9
10
11
let unm1 = '周杰伦'
let unm2 = '林俊杰'
// 使用一个 临时变量 用来做中间存储
let temp
// 把num1的值赋值给 temp
temp = unm1
// 把num2的值赋值给num1
unm1 = unm2
// 把temp的值给num2
unm2 = temp
document.write(unm1, unm2)

变量的本质:

  1. 内存:计算机中存储数据的地方,相当于一个空间
  2. 变量:是程序在内存中申请的一块用来存放数据的小空间

变量命名规则与规范:

  1. 不能有特殊含义字符,如JS内置的一些英语词汇:let、var、if、for 等..
  2. 只能用下划线、字母、数字、$组成,数字不能开头
  3. 字母区分大小写,如 Age 和 age 是不同的变量
  4. 起名要有意义, 遵守小驼峰命名法, 例:userName

let 和 var :

  1. let 为了解决 var 的一些问题

  2. 以后声明变量统一使用 let

  3. var 声明:

  4. 可以先使用 在声明 (不合理)

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


JS数组:

  1. 数组(Array)是一种可以按顺序保存多个数据
  2. 数组是按顺序保存,每个数据都有自己的编号
  3. 计算机中的编号从0开始,所以星期一编号为0,星期二编号为1,以此类推
  4. 在数组中,数据的编号也叫索引或下标
  5. 数组可以存储任意类型的数据
  6. 取出来是什么类型的,就根据这种类型特点来访问
1
2
3
let arr = ['星期一', '星期二', '星期三']
console.log(arr[0]);
console.log(arr[2]);
  1. 元素:数组中保存的每个数据都叫数组元素
  2. 下标:数组中数据的编号
  3. 长度:数组中数据的个数,通过数组的length属性获得

数据类型:

  1. 更加充分和高效的利用内存
  2. 也更加方便开发人员的使用数据

JS 数据类型整体分为 两大类:

基本数据类型 :

  1. number 数字型
  2. string 字符串型
  3. boolean 布尔型
  4. undefined 未定义型
  5. null 空类型

引用数据类型:

  1. object 对象function 函数 array 数组
  2. function 函数
  3. array 数组

数字类型 number :

  1. 即数学中的数字,可以是整数、小数、正数、负数
  2. JS中的正数、负数、小数等 统一称为 数字类型
  3. JS是弱数据类型,变量到底属于哪种类型,只有赋值之后,才能确认
  4. Java是强数据类型 例如 int a = 3 必须是整数
1
let uname = 20

字符串类型 string :

  1. 通过单引号 (‘ ‘) 、双引号 (“ “) 或反引号(``)包裹的数据都叫字符串
  2. 无论单引或双引必须成对使用
  3. 单引/双引可互相嵌套,但不以自已嵌套自已 (外双内单,外单内双)
  4. 必要时可使用转义符 \,输出单引或双引
1
let uname = '我是字符串类型'
1
2
3
4
5
// 3. 字符串拼接
console.log('我叫周杰伦' + '我叫林俊杰')
let uname1 = '周杰伦'
let uname2 = '林俊杰'
console.log(uname1 + uname2)

模板字符串:

  1. 内容拼接变量时,用 ${} 包住变量, 使得拼接字符串更简便
  2. 拼接字符串和变量, 在没有它之前,要拼接变量比较麻烦
1
document.write(`大家好, 我叫${name}, 今年${name1}岁了`)

布尔类型 boolean :

  1. 表示肯定或否定时在计算机中对应的是布尔类型数据

  2. 它有两个固定的值 true 和 false,表示肯定的数据用 true (真) ,表示否定的数据用 false (假)

1
2
let name = true
let name = false

未定义类型 undefined :

  1. 未定义是比较特殊的类型,只有一个值 undefined

  2. 只声明变量,不赋值的情况下,变量默认值为undefined

  3. 开发中经常声明一个变量,等待传送过来的数据。 如果不知道这个数据是否传递过来,此时可通过检测这个变量是不是undefined,即可判断用户是否 有数据传递过来

null 空类型 :

  1. null 表示 值为空
  2. 官方解释:把null作为尚未创建的对象
  3. 将来有个变量里面存放的是个对象,但是对象还没创建好,可以先给个null

null 和 undefined 区别:

  1. undefined 表示没有赋值
  2. null 表示赋值了,但内容为空

控制台 输出语句 和 检测数据类型 :

  1. 控制台语句经常用于测试结果来使用
  2. 数字型和布尔型颜色为蓝色,字符串和undefined颜色为灰色
1
2
3
4
5
6
7
8
9
10
11
// 通过 typeof 关键字检测数据类型
let unm1 = 10
let unm2 = '10'
let unm3 = true
let unm4 = undefined
let unm5 = null
console.log(typeof unm1)
console.log(typeof unm2)
console.log(typeof unm3)
console.log(typeof unm4)
console.log(typeof unm5)

类型转换:

为什么需要类型转换?
  1. JS是弱数据类型: JS也不知道变量到底属于哪种数据类型,只有赋值了才清楚
  2. 坑:使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单进行加法运算
  3. 此时需要转换变量的数据类型, 就是把一种数据类型的变量转换成需要的数据类型
1
console.log('100 + 100') // 输出结果100100

隐式转换:

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

  2. + 号两边只要有一个是字符串,都会把另外一个转成字符串

  3. 除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型

  4. 缺点: 转换类型不明确,靠经验才能总结

  5. 技巧: +号作为正号解析可以转换成Number

1
2
3
4
5
let uname = '10'
console.log(+uname);
console.log(+'10' + 10)
console.log(10 / 10)
console.log(10 * 10)

显式转换:

  1. 编写程序时过度依靠系统内部的隐式转换是不严谨的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。为避免因隐式转换带来的问题,通常跟逻辑需要对数据进行显示转换

转换为数字型:

Number 数据 :
  1. 转成数字类型
  2. 如果字符串内容里有非数字,转换失败时结果为 NaN(Not a Number) 即不是一个数字
  3. NaN也是Number类型的数据,代表非数字
1
2
let uname = '10'
console.log(Number(uname))
parseInt ( 数据 ) 只保留整数:
1
2
let uname = '10.99'
console.log(parseInt(uname))
parseFloat ( 数据 ) 可以保留小数:
1
2
let uname = '9.9'
console.log(parseFloat(uname))

转换为字符型:

String( 数据 ):
1
2
let uname = 10
console.log(String(uname))
变量.toString( 进制 ) :
1
2
let uname = 20
console.log(uname.toString(2))

用户订单信息打印: 点击查看

JS简单实现加法器: 点击查看

1
2
3
4
5
6
7
<script>
// JS简单实现加法器
let number1 = +prompt('请输入第一个数')
let number2 = +prompt('请输入第二个数')
alert(`计算结果为: ${number1 + number2}`)
document.write(`计算结果为: ${number1 + number2}`)
</script>

本节单词:

  1. prompt
  2. document
  3. write
  4. alert
  5. console
  6. log
  7. let
  8. var
  9. number
  10. string
  11. boolean
  12. undefined
  13. null
  14. typeof
  15. true
  16. false
  17. nan
  18. parseInt
  19. parsefloat
  20. string
  21. tostring