WEB前端04-JavaScript基本语法(包含ES6新特性,新语法)

JavaScript基础

1.JavaScript引入方式

  • 方法一:内部脚本
js代码必须位于<script></script>标签之间。
  • 方法二:外部脚本
<script src="js/dome.js"></script>

注意:

1.HTML文档中,可以在任意位置放置任意数量的<script>,但是会影响html中的执行顺序
2.一般将脚本放在<body>元素的底部

2.JavaScript基本语法

1.数据类型
  • 原始数据类型
1.number:数字。双精度小数/NAN(非数字的数字类型) let a = 10//表示双精度小数10.00
  bigInt:整数。let a = 10n//表示整数10 
2.string:字符串。用'str'"str"`str`
3.boolean:truefalse
4.null:一个对象为空的占位符
5undefined:
➢ 在引用一个定义过但没有赋值的变量时的返回值。
➢ 在引用一个不存在的数组时的返回值。在引用一个不存在的对象属性时的返回值。
➢ 当表达式或函数(方法)没有返回值的时候

tip:相同点:二者都没有属性和方法,二者合称 Nullish
不同点:undefined由程序显示,null是由程序员提供
  • 引用数据类型:对象(后面会讲到)
2.变量
  • **变量名:**必须以字母或下划线开头,中间可以是数字,字母或下划线
  • **Js是弱类型的语言:**在开辟变量存储空间时,不定义空间存储的类型,可以存放任意类型的数据。
  • Js中的变量语法
var:定义全局变量
let:定义局部变量
const:定义常量(只能被赋值1次,不能多次赋值,但是可以修改其中的元素,如const定义的数组,可以修改数组中的元素,但不可以给数组重新赋值)
  • 声明变量的规则:
1. 可以使用一个关键字var同时声明多个变量,并且可以同时初始化
2. var语句可以用作for循环和for/in循环的一部分
3. 使用var语句多次声明同一个变量,就相当于对变量的重新赋值。
  • 可以使用typeof(变量名)获取变量的类型
3.运算符的注意事项

因为JavaScript和Java的运算符相差不大,这里着重强调Js运算符的注意事项

  • 注意在进行算数运算的时候,如果不是数字会进行自动转换
字符串:根据字面将string转换为number,如果不能转换会自动转换为NAN
布尔值:true转换为1false转换为0
其他不能转换成数字的主动转换为NAN
  • 布尔表达式:

在 js 中,并不是 boolean 才能用于条件判断,你可以在 if 语句中使用【数字】、【字符串】… 作为判断条件

let b = 1;
if(b) { // true
    console.log("进入了");
}

这时就有一个规则,当需要条件判断时,这个值被当作 true 还是 false,当作 true 的值归类为 truthy,当作 false 的值归类为 falsy

其他类型转boolean:
1.number:0NaN为假,其他为真
2.string:除了空字符串(""),其他都是true
3.null&undefined:都是false
4.对象:所有衬象都为true
  • "“和”="的区别
== 等于,左侧与右侧的值相等时,则返回true;否则返回false:会强制类型转换
=== 严格等于,左侧与右侧的值相等,并且数据类型相同时,返回true;否则返回false:不会强制类型转换

相等在数据类型不同时,尝试进行数据类型转换,例如,在字符串和数字的比较中,字符串会被转为数字再比较;布尔值true转为数字1,布尔值false转为数字0
  • 在使用比较符的时候会进行强制类型转换后再比较
1.类型相同直接比较
	字符串根据字典序进行比较
	number根据大小进行比较
2.类型不同进行强转后再进行比较
	注意:=====的区别
  • 防止空指针的操作
var obj;
if	(obj) {//无论判断对象是否为空,或者字符串是否为空均可
	....
}
  • 位运算

image-20231228160622031

  • 运算符的优先级
分类运算符含义结合性
1++前后增量R
1前后减量R
1逻辑非R
2* / % **乘 除 求余 乘方L
3+ -加减L
4< <= > >=比较数字顺序L
4in测试属性是否存在L
5==判断相等L
5!=判断不等L
6&按位与L
7&&逻辑与L
8?:条件运算符R
9=赋值R
9+= -= *= /= %=运算且赋值R
10,忽略第一个操作数L
  • ??与?.运算符
??运算符
let a =1 ??2;
//解释:1 是 nullish,返回值21 不是 nullish,返回值1
//使用场景:
当判断传入的值是否为nullundefined时,如果是赋值为默认值
?.运算符:
//场景
function test(stu) {
    console.log(stu.address?.city)
}
如果address为nullundefined时会报错,因为它们本身就没有属性,为了避免这个问题可以采用:?.运算符
//修正:
function test(stu) {    
    console.log(stu.address?.city)
}
此时address不存在时或为null时,访问.city返回的是undefined,不会报错
  • …展开运算符

1.将数组元素进行展开

let arr = [1,2,3];
function test(a,b,c) {
    console.log(a,b,c);
}

//将arr的元素进行传递test函数中
test(...arr);
//输出:1,2,3

2.复制数组或对象

//数组复制

image-20240716175309702

//对象复制

image-20240716175447149

Tip:展开运算符复制只是对同一片空间的引用,并不是开辟新的空间,进行深度的复制。

image-20240716175801368

3.合并数组或对象

image-20240716175902902

image-20240716175944040

  • 解构赋值"[]“,”{}"

//对数组解构赋值:[]

let arr = [1,2,3];
//通过[]运算符对数组进行解构赋值
let [a, b, c] = arr;	// 结果 a=1, b=2, c=3

//对对象解构赋值:{}

let obj = {name:"yhw", age:18};
//通过{}运算符对对象进行解构赋值
let {name,age} = obj;
4.控制语句
  • 常见的语句有:
//选择语句
if ... else
switch
//循环语句
while
do ... while
for
for ... in
for ... of
//捕获异常语句
try ... catch
  • for in

**作用:**主要用来遍历对象的属性名和方法名

image-20240716181618184

如果使用继承,子对象会将其父对象的属性名和方法名均遍历

image-20240716181811467

在 for in 内获取属性值,要使用 [] 语法,而不能用 . 语法

image-20240716181954256

  • for of

**作用:**主要用来遍历数组,也可以是其它可迭代对象,如 Map,Set 等

image-20240716182212637

  • try catch

和Java的try catch语句相似

image-20240716182517043

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值