js语言基础(一)—— 基础知识
一、JS简介
JavaScript是目前web开发中不可缺少的脚本语言,前端三件套之一。JS可以直接运行在浏览器端,增加网页的动态交互功能。测试版本叫LiveScript,但发布正式版时又被重命名为JavaScript。为什么命名为JavaScript呢?因为Java当时比较火,可以说是为了蹭一下Java的热度。
ECMAScript为我们定义最基本的语法,像是数据类型(原始值、对象)、运算符、流程控制语句等内容。为了使JS可以适用于不同的场景,在不同的JS解释器中还为我们提供了不同的扩展以增强其功能。像是浏览器中的DOM、BOM使得我们可以通过JS操作网页和浏览器。NodeJS中的fs模块可以使我们直接操作计算机系统中的各种文件。所以我们学习JS时,除了要学习ES标准以外,还要学习它的各种扩展,才能在不同的环境中发挥出JS的最大威力
二、第一个js程序
学习一门编程语言,第一步当然就是 hello world 啦,问就是,一定要有仪式感,尊重传统
可以在html模板中的head标签写入下列代码,再用浏览器打开,即可运行
1 | <script> |
三、JS书写位置
1.内嵌式
可以在html模板中的head标签中书写script标签,然后将js书此script标签中,
1 | <script>在这里书写语句吧</script> |
2.外链式
新建一个后缀名为.js的文件,然后在该文件中书写语句,再通过script标签引入到html网页中
3.行内式
也可以直接书写在标签身上,是一个简写的事件,所以又称之为事件属性。
1 | <button onclick="alert('你点我干嘛')"></button> |
四、JS中的一些基础语法
1 | 1、 注释:多行注释 /**/ |
五、变量和常量
js是弱类型语言,不重视类型的定义,但js会根据为变量赋值的情况自定判断该变量是何种类型。
1、声明
1 | //var与let都是声明变量,最好不要使用var |
2、注意事项
- 用let,而不要使用var(var本身存在很多问题,记得用 let 就完了)
- 变量并不存储任何值,而是存储值的内存地址
六、数据类型与类型检查
1、基本类型
1 | 1.数值型(Number): //存储很大或很小的数时无法准确显示 |
2、typeof类型检查
a定义的值(let a =) | typeof a的返回值 |
---|---|
1 | number |
9999999999999999n | bigint |
true | boolean |
null | object |
不进行定义 | undefined |
Symbol(“创建符号”) | symbol |
注:由于js历史遗留问题,编辑器会将null作为object类型处
七、类型转换
1、显式转换
显示转换一般指使用Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。还有专门将字符串转换为数值的方法,如parseInt、parseFloat等
- Number函数:
1 | String(1234) // "1234" |
String函数:
1
2
3
4
5String(1234) // "1234"
String('abcd') // "abcd"
String(true) // "true"
String(undefined) // "undefined"
String(null) // "null"Boolean函数:
1
2
3
4
5Boolean(0) // false
Boolean(undefined) // false
Boolean(null) // false
Boolean(NaN) // false
Boolean('') // falseparseInt与parseFloat函数:
1
2
3let a = "3.1415"
let b = parseInt(a) //b = 3
let c = parseFloat(c) //c = 3.1415
2、简单聊聊隐式转换
#####隐式类型转换是在一定场景下,js 运行环境自动调用ToString、ToNumber、ToBoolean、ToPrimitive这几个方法,尝试转换成期望的数据类型。
转化类型 | 运算符 | 说明 |
---|---|---|
转换成 String | + ‘任意字符串’ | 任意值与字符串相加,会先将其他值转换为字符串,然后拼接 |
转换成 Number | (自增自减运算符) (减、乘、除) (关系运算符) | 转换为 Number 再进行运算 |
转换为Boolean | ! (逻辑非运算符) | 自动转换为Boolean |
任意值与字符串相加的例子
1 | a = 10 + '5' // "10" + "5" 会返回"105" |
其他的例子
1 | a = 10 - '5' // 10 - 5 |
八、运算符
1、算数运算符
1 | + - * / ++ -- % |
2、赋值运算符
运算符 | 例子 | 等同于 |
---|---|---|
= | x = y | |
+= | x += y | x = x + y |
-= | x -= y | x = x - y |
*= | x *= y | x = x * y |
/= | x /= y | x = x / y |
%= | x %= y | x = x % y |
3、比较运算符
1 | < <= > >= |
js中特殊的比较运算符
运算符 | 描述 | 例子 | 返回值 |
---|---|---|---|
== 等于 | 值相等时,返回true | 5 == “5” | true |
=== 绝对等于 | 值和类型都等于时,返回true | 5 ===’ 5’ | false |
!= 不等于 | 值不相等时,返回true | 5 !== “5” | false |
5 !== “4” | true | ||
!== 不绝对等于 | 值和类型有一个不相等,或两个都不相等时返回true | 5 !== “5” | true |
5 !== “4” | true |
4、逻辑运算符
1 | && || ! |
5、条件运算符
语法:条件表达式 ?表达式1 : 表达式2
执行顺序:
条件运算符在执行时,会先对条件表达式进行求值判断,如果结果为true,则执行表达式1,如果结果为false,则执行表达式2
1 | let max = a > b ? a : b //可以获取将a和b的最大值 |
九、流程控制
1、条件语句
1 | let score = 59; |
####2、switch语句
注意:switch语句在执行时,会依次将switch后的表达式和case后的表达式进行**==全等比较==**
1 | switch(表达式){ |
3、循环语句
1 | while(循环条件){循环体;} |
4、补充(while与do-while语句的比较)
while语句是先判断再执行
do-while语句是先执行再判断
实质的区别:
do-while语句可以确保循环至少执行一次
1 | //会打印一次 |