当前位置: 首页 > article >正文

JavaScript 基础2

js的运算符

算数运算符

+ 相加求和,如果用在字符串则是拼接

-相减求差

*相乘求积

/相除求商

%模除求余

具体用法如下

let num = 154
let num2 = 15
document.write(num+num2)
document.write(`<br>`)
document.write(num-num2)
document.write(`<br>`)
document.write(num*num2)
document.write(`<br>`)
document.write(num/num2)
document.write(`<br>`)
document.write(num%num2)
document.write(`<br>`)

最后输出结果

赋值运算符

a=b,把b赋值给a
a+=b,a=a+b
a-=b,a=a-b
a*=b,a=a*b
a/=b,a=a/b
a%=b,a=a%b

自增自减运算符

let num = 114514

num++  等价于  num=num+1

num--  等价于  num=num-1

每次增或者减的单位都是1

比较运算符

let a=12,b=22
a>b   false,a大于b,判断为假
a<b   true,a小于吧=b,判断为真
a>=b   false,a大于或者等于b,判断为假
a<=b   true,a小于或者等于b,判断为真
a!=b true,a不等于b,判断为真
a!==b true,a不全等于b,判断为真


a==b   false,a等于b,判断为假
a===b   false,a等于b并且a与b类型相同,判断为假
如果a是100,b是"100",则a==b为true,a===b为false。
如果a是100,b是100,则a==b为true,a===b为true。
a!==b a和b不相同,并且类型也不同
大于小于这些都和==类似,不判断类型是否相同

逻辑运算符

 &&  两边同时为真则为真

||  两边有一个真就是真,如果都是假则为假

!  布尔值反转,真变假,假变真

^  二进制的运算
a    = 0111 0101

b    = 1001 1010

a^b = 1110 1111

二进制相同位数的值不同为1,相同为0

短路:
在a&&b运算的时候如果a判断为假,则整个a&&b都为假,不会判断b
在a||b的运算的时候,如果判断a为真,则整个a||b为真,不会判断b

三元运算符

a ? b :c
如果a为真,值为b,否则值为c
 

//补0案例 输入1 输出01
let num = prompt("input a number")
document.Write(`${num < 10 ? "0"+num : num}`)

输入小于十的数会补一个0 

if语句

if,判断

if(表达式){
    语句
}

如果表达式的为真,则执行语句。为假不执行

if...else...

if(表达式){
语句a
}else{
语句b
}

如果表达式为真执行语句a否则执行语句b

if...else if...else

if(表达式1){
语句a
}else if(表达式2){
语句b
}else{
语句c
}

如果表达式1为真执行语句a,如果表达式1为假去判断表达式2,如果表达式2为真执行语句b,如果表达式2为假执行语句c。可以嵌套很多很多很多很多很多很多个if else 

switch语句

let num=2
switch(num){
  case 1:
    document.write("1")
    break
  case 2:
    document.write("2")
    break
  case 3:
    document.write("3")
    break
  default:
    document.write("0")
}

根据num去匹配对应的。num=2,则case 2匹配,执行case2的语句  
要求:num和1类型相同,值相同才会匹配。

document.write("2")
    break

break用于跳出switch语句不然case3 和 default都会被执行

while语句

while(循环条件){
循环体
}

如果循环条件为真则执行循环体代码,为假结束循环

可以使用break直接结束整个循环,continue跳过本次循环进入下一个循环 

for语句

for(a;b;c){

循环体

}

a一般是用于变量的初始化,b是循环条件,c用于循环变量更新。而且abc三个语句都是可以省略的

可以使用break直接结束整个循环,continue跳过本次循环进入下一个循环

js函数 

函数的声明

无参函数声明:
function 函数名(){
        函数体
}


调用:函数名()

带参函数声明
function 函数名(参数列表){
        函数体
}


调用:函数名(对应参数)

由于js的变量无论什么类型都是一样的表示形式,所以参数列表里面只需要写变量名就可以了。

 function sum(num1,num2){
    return num1 + num2[5];
  }
  let num = sum(1,[3,4,5,6,7,8,9])
  document.write(num)

return x 返回变量x,函数一旦执行了return就会立即终止,不会继续执行下去。

同样,我们并不确定函数接收到了参数没有,如果没有传递参数,在运行的时候也是不会报错的。所以就需要我们给变量形参一个默认的值。这样就可以有一个兜底的情况。我们也可以在这里声明形参所需要的实参是什么类型的。

如果我们想检测我们传递的参数类型是否正确,不正确就打印出函数实参类型错误。
 

function sum(num1 = 0,num2 = 0){
    if(typeof num1 === "number" && num2 ==="number")
    {    
         return num1 + num2
    }else{
        console.log("error")
        }
}

或者直接给形参和返回值加个限制

function sum(num1:number,num2:number):number{
      
         return num1 + num2
    
}

function sum(num1:number,num2:number):number里面的:number就是说这个参数类型是number类型,如果不是就会报错。形参列表外面的:number就是对函数返回值的限制

现在为止我们所学到的数据类型有

  1. number 数字类型
  2. string 字符串
  3. bool 布尔值
  4. undefined 未定义
  5. null 空
  6. array 数组

总结:函数的作用在于将一段可能被多次使用的代码整合在一起,方便多次使用。

js匿名函数

具有函数名的函数成为具名函数,我们上面讲的就是具名函数。
匿名函数就是没有名字的函数,匿名函数的调用可以有一下方法:

1.将匿名函数赋值给变量

let alpha = function(num1: number, num2, num3): number {
    return num1 + num2 + num3;
  }

  let a = alpha(1,2,3)
  console.log(a)

 相当于把一个函数赋值给一个变量,调用的时候变量名代替了函数名。

2.立即执行函数

(function(x,y){
    console.log(x*y)
})(5,4);
//结果打印20到控制台

这个函数会被直接执行,不需要调用,也没法调用。而且立即执行函数之间要加分号

js对象 

定义

let name = {
        属性名:属性值,
        方法名:函数
}//逗号隔开,最后一个不需要加逗号

有点像GO语言的map,c的结构体,python的字典之类的。

访问
name.属性名  得到   属性值
name.方法名()    调用函数

对象的增删改查

1.增
 

  let goods ={
    name:"小米",
    id : "100012816024",
    weight : 0.55,
    address : "中国大陆",
  }

goods.money = 1999

对象名.新属性名 = 新值。完成添加操作

2.删

let goods ={
    name:"小米",
    id : "100012816024",
    weight : 0.55,
    address : "中国大陆",
  }

  delete goods.name

delete 对象.属性  删除指定的属性

3.改

let goods ={
    name:"小米",
    id : "100012816024",
    weight : 0.55,
    address : "中国大陆",
  }

  goods.name = "华为"

对象.属性 = 新值 更改值,如果不存在对应属性就是增操作

4.查

let goods ={
    name:"小米",
    id : "100012816024",
    weight : 0.55,
    address : "中国大陆",
  }

  goods.name 

对象.属性 查询操作,返回属性的属性值

对象的操作增删改查都可以使用对象名["属性名"]来代替
 

对象.name   ===   对象["name"]
delete 对象.name   ===   delete 对象["name"]
对象.name = "qwe"   ===   对象["name"]="qwe"

遍历对象

for(let x in 对象){//x是属性的名,也就是循环的把对象里面的属性名或者方法名轮番赋值给x
 console.log(对象[x])//输出对应的参数,如果是函数则会打印该函数,不运行
}


http://www.kler.cn/a/465592.html

相关文章:

  • 【跟着官网学技术系列之MySQL】第2天之MySQL版本:创新和 LTS
  • uniapp中判断设备类型
  • C++:范围for
  • ABAP 两个内表不同名称字段赋值的方法
  • 瑞吉外卖项目学习笔记(十)修改套餐、删除套餐、起售和停售套餐
  • 2501d,jingo优化
  • 【网络安全】PostMessage:分析JS实现XSS
  • .e01, ..., .e0n的分卷压缩包怎么解压
  • 多目标优化算法——基于分解的多目标进化算法(MOEA-D)
  • [C++]vector(超详细)
  • Docker入门常用命令总结
  • 软考教材重点内容 信息安全工程师 第 12 章网络安全审计技术原理与应用
  • 牛客网刷题 ——C语言初阶——OR76 两个整数二进制位不同个数
  • 计算效率提升 10 倍,存储成本降低 60%,灵犀科技基于 Apache Doris 建设统一数据服务平台
  • Swift Combine 学习(三):Subscription和 Subscriber
  • React Router 用法概览
  • Redis的数据过期清除策略
  • 周亚辉投资笔记2025系列第1篇:机器人时代的社会结构模型与十年后中国首富预测
  • xdoj ROT13加密
  • 【现代摄像头作为一种视频输入摄像头】
  • B4004 [GESP202406 三级] 寻找倍数
  • /ete/security/limits.conf参数详解
  • 小程序学习07—— uniapp组件通信props和$emit和插槽语法
  • 云计算复习
  • 聊天机器人Rasa面试内容整理-Rasa NLU 与 Rasa Core 的功能与区别
  • 低代码引擎插件开发:开启开发的便捷与创新之路