JavaScript基础语法
本章内容:
1.JavaScript简介
2.JavaScript 书写位置
3.JavaScript 结束符
4.JavaScript 输入输出语法
5.JavaScript 代码执行顺序:
6.变量
7.常量
8.数据类型
9.类型转换
10.通过 typeof 关键字检测数据类型
11.银行卡余额案例
JavaScript是什么?
JavaScript 是一种运行在 客户端(浏览器) 的编程语言
JavaScript组成是什么?
ECMAScript( 基础语法 )、web APIs (DOM、BOM)
JavaScript 书写位置
内部 JavaScript
直接写在html文件里,用script标签包住
规范 :script标签写在上面
外部 JavaScript
代码写在以.js结尾的文件里
语法: 通过script标签,引入到html页面中。
内联 JavaScript
代码写在标签内部
JavaScript 注释 单行注释 符号: // 作用: //右边这一行的代码会被忽略 快捷键: ctrl + /
块注释
符号: /* */
作用: 在/* 和 */ 之间的所有内容都会被忽略
快捷键: shift + alt + A
JavaScript 结束符
结束符
作用: 使用英文的 ; 代表语句结束
实际情况: 实际开发中,可写可不写, 浏览器(JavaScript 引擎) 可以自动推断语句的结束位置
现状: 在实际开发中,越来越多的人主张,书写 JavaScript 代码时省略结束符
约定: 为了风格统一,结束符要么每句都写,要么每句都不写(按照团队要求)
JavaScript 输入输出语法
输出语法:
语法1:
作用: 向body内输出内容
注意: 如果输出的内容写的是标签,也会被解析成网页元素
语法2:
作用: 页面弹出警告对话框
语法3:
作用: 控制台输出语法,程序员调试使用
输入语法:
语法:
作用: 显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字
效果:
JavaScript 代码执行顺序:
按HTML文档流顺序执行JavaScript代码
alert() 和 prompt() 它们会跳过页面渲染先被执行(目前作为了解,后期讲解详细执行过程)
变量是什么?
变量是计算机存储数据的“ 容器 ”
白话:变量就是一个装东西的盒子。
通俗:变量是计算机中用来 存储数据 的“ 容器 ”,它可以让计算机变得有记忆。
注意: 变量不是数据本身,它们仅仅是一个用于存储数值的容器。可以理解为是一个个用来装东西的纸箱子。 变量的基本使用
- 声明变量:
要想使用变量,首先需要创建变量(也称为声明变量或者定义变量)
语法:
let 变量名
声明变量有两部分构成:声明关键字、变量名(标识)
let 即关键字 (let: 允许、许可、让、要),所谓关键字是系统提供的专门用来声明(定义)变量的词语
- 变量赋值:
定义了一个变量后,你就能够初始化它(赋值)。在变量名之后跟上一个“=”,然后是数值。
3. 更新变量:
变量赋值后,还可以通过简单地给它一个不同的值来更新它。
- 声明多个变量: 变量赋值后,还可以通过简单地给它一个不同的值来更新它。
语法: 多个变量中间用逗号隔开。
说明: 看上去代码长度更短,但并不推荐这样。为了更好的可读性,请一行只声明一个变量。
变量命名规则与规范
- 规则: 不能用关键字
关键字:有特殊含义的字符,JavaScript 内置的一些英语词汇。例如:let、var、if、for等
只能用下划线、字母、数字、$组成,且数字不能开头
字母严格 区分大小写 ,如 Age 和 age 是不同的变量
- 规范: 起名要有意义
遵守小驼峰命名法
第一个单词首字母小写,后面每个单词首字母大写。例:userName
let 和 var 区别:
在较旧的JavaScript,使用关键字 var 来声明变量 ,而不是 let。
var 现在开发中一般不再使用它,只是我们可能再老版程序中看到它。
let 为了解决 var 的一些问题。
var 声明:
可以先使用 在声明 (不合理)
var 声明过的变量可以重复声明(不合理)
比如变量提升、全局变量、没有块级作用域等等
现在不用var
数组 (Array) —— 一种将 一组数据存储在单个变量名下 的优雅方式
数组是按顺序保存,所以每个数据都有自己的编号
计算机中的编号从0开始
在数组中,数据的编号也叫 索引或下标
数组可以存储任意类型的数据
<script>
let arr = ['王德发', '王安邦', '厚礼蟹']
console.log(arr)
console.log(arr[0])
console.log(arr[2])
console.log(arr.length)
</script>
常量的基本使用
概念: 使用 const 声明的变量称为“常量”。
使用场景: 当某个变量永远 不会改变 的时候,就可以使用 const 来声明,而不是let。
命名规范: 和变量一致
注意: 常量不允许重新赋值,声明的时候必须赋值(初始化)
小技巧: 不需要重新赋值的数据使用const
let — 现在实际开发变量声明方式。
var — 以前的声明变量的方式,会有很多问题。
const — 类似于 let ,但是变量的值无法被修改。
数据类型
JS 数据类型整体分为两大类:
基本数据类型:
number 数字型
string 字符串型
boolean 布尔型
undefined 未定义型
null 空类型
引用数据类型:
object 对象
数据类型 – 数字类型(Number):
JavaScript 中的正数、负数、小数等 统一称为 数字类型。
JS 是弱数据类型,变量到底属于那种类型,只有赋值之后,我们才能确认
Java是强数据类型 例如 int a = 3 必须是整数
数字可以有很多操作,比如,乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。
数学运算符也叫 算术运算符 ,主要包括加、减、乘、除、取余(求模)。
求和
<script>
let num1 = +prompt('请输入第一个数字')
let num2 = +prompt('请输入第二个数字')
let num = num1 + num2
// document.write(`两个数字的和是:${num1 + num2}`)
document.write(`两个数字的和是:${num}`)
</script>
</body>
优先级 顺序
同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。
JavaScript中 优先级越高越先被执行, 优先级相同时以书从左向右执行 。
乘、除、取余优先级相同
加、减优先级相同
乘、除、取余优先级大于加、减
使用 () 可以提升优先级
总结: 先乘除后加减,有括号先算括号里面的
计算球的体积
<script>
let r = prompt('请输入球的半径')
let bor = 4 / 3 * 3.14 * r * r * r
document.write(bor)
</script>
NaN 代表一个计算错误。它是一个不正确的或者一个未定义的数学操作所得到的结果
NaN 是粘性的。任何对 NaN 的操作都会返回 NaN
数据类型 – 字符串类型(string):
通过单引号( '') 、双引号( "")或反引号( ` ) 包裹的数据都叫字符串 ,单引号和双引号没有本质上的区别,推荐使用 单引号 。
注意事项:
- 无论单引号或是双引号必须成对使用
- 单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
- 必要时可以使用转义符 \,输出单引号或双引号
<script>
let str = '王德发'
let str1 = "王德发1"
let str2 = `王德发2`
console.log(str2)
let num = '10'
let num2 = 20
console.log(num)
console.log('王德发很帅')
console.log('王德发很"帅"')
let str3 = '王德发 '
console.log(str3.length)
console.log(1 + 2)
console.log(1 + '2')
let age = 22
document.write('我今年' + age + '岁了')
console.log('我叫' + '王德发')
// 模板字母串
let uname = '厚礼蟹'
document.write(`我叫${uname}, 今天${age}了`)
</script>
数据类型 – 布尔类型(boolean)
表示肯定或否定时在计算机中对应的是布尔类型数据。
它有两个固定的值 true 和 false,表示肯定的数据用 true(真),表示否定的数据用 false(假)。
数据类型 – 未定义类型(undefined)
未定义是比较特殊的类型,只有一个值 undefined。
什么情况出现未定义类型?
只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined。
工作中的使用场景:
我们开发中经常声明一个变量,等待传送过来的数据。
如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传 递过来。
数据类型 – null(空类型)
JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值
通过 typeof 关键字检测数据类型
typeof 运算符可以返回被检测的数据类型。它支持两种语法形式:
-
作为运算符: typeof x (常用的写法)
-
函数形式: typeof(x)
换言之,有括号和没有括号,得到的结果是一样的,所以我们直接使用 运算符 的写法。
类型转换
1.隐性转换
规则:
+号两边只要有一个是字符串,都会把另外一个转成字符串
除了+以外 的算术运算符 比如 - * / 等都会把数据转成数字类型
缺点:
转换类型不明确,靠经验才能总结
小技巧:
+号作为正号解析可以转换成数字型
任何数据和字符串相加结果都是字符串
<script>
console.log(1 + 1)//2
console.log('1' + '1')//11
console.log('1' + 1)//11
console.log(1 - 1)//0
console.log(1 - '1')//0
console.log(+'15')//数字15
console.log('1' * 1)//1
console.log(10 / '5')//2
</script>
2.显性转换
概念:
自己写代码告诉系统该转成什么类型
转换为数字型
Number(数据)
转成数字类型
如果字符串内容里有非数字,转换失败时结果为 NaN(Not a Number)即不是一个数字
NaN也是number类型的数据,代表非数字
parseInt(数据) 只保留整数
parseFloat(数据) 可以保留小数
<script>
//转换为数字
let str = '123'
console.log(typeof Number(str))//number
console.log(Number('dj'))//NaN
console.log(Number('舞曲'))//NaN
console.log(parseInt('12px'))//12
console.log(parseInt('12.556'))//12
console.log(parseInt('dj12.556'))//NaN
console.log(parseFloat('12.556'))//12.556
console.log(parseFloat('12.556px'))//12.556
console.log(parseFloat('dj12.556px'))//NaN
console.log(parseFloat('12.00'))//12
//转换为字符串
let num = 10
let str1 = num.toString()
</script>
计算银行卡余额案例
html部分
<h2>2022年4月消费支出</h2>
css部分
<style>
h2 {
text-align: center;
margin: 100px auto;
}
table {
border-collapse: collapse;
text-align: center;
height: 80px;
margin: 0 auto;
}
th {
padding: 5px 30px;
}
table,
th,
td {
border: 1px solid black;
}
</style>
js部分
<script>
let zonge = prompt('请输入总额')
let shuifei = prompt('请输入水费')
let dianfei = prompt('请输入电费')
let wangfei = prompt('请输入网费')
let yue = zonge - shuifei - dianfei - wangfei
document.write(`
<table>
<tr>
<th>银行卡总额</th>
<th>水费</th>
<th>电费</th>
<th>网费</th>
<th>银行卡余额</th>
</tr>
<tr>
<td>${zonge}</td>
<td>${shuifei}</td>
<td>${dianfei}</td>
<td>${wangfei}</td>
<td>${yue}</td>
</tr>
</table>
`)
</script>
最后是原图(●ˇ∀ˇ●)