首页 > 编程语言 >JavaScript学习 第三天

JavaScript学习 第三天

时间:2024-03-16 21:29:46浏览次数:21  
标签:arr console 函数 JavaScript 第三天 学习 let return log

一、数组

(一)数组基本知识

声明

按顺序保存数据的数据类型

<body>
  <script>
    let arr = [1 ,2 ,'猪儿', true]
  </script>
</body>

声明数组函数

<body>
  <script>
    let arr = new Array(1 ,2 ,'猪儿', true)
  </script>
</body>

length 数组的长度 就是里面元素的个数

复习:for循环 遍历数组

求数组最大值和最小值
<body>
  <script>
    let arr = [2, 6, 17, 52, 25, 7, 77]
    let max = arr[0]
    let min = arr[0]
    for (let i = 1; i <= arr.length - 1; i++) {
      if (max < arr[i]) {
        max = arr[i]
      }
      if (min > arr[i]) {
        min = arr[i]
      }
    }
    document.write(`最大值是${max},最小值是${min}`)
  </script>
</body>

(二)操作数组

对数组进行增、删、改、查操作

1.查

前面都是查的操作

2.改

往空数组里面增加元素

<body>
  <script>
    let arr = ['red', 'blue', 'yellow']
    arr[0] = 1
    console.log(arr)
  </script>
</body>

在每个元素的后面加上一段文字

<body>
  <script>
    let arr = ['red', 'blue', 'yellow']
    for (let i = 0; i < arr.length; i++) {
      arr[i] = arr[i] + '是一种颜色'
    }
    console.log(arr)
  </script>
</body>
3.增
.push() 方法增加元素

将一个或多个元素添加到数组的末尾 push经常用

<body>
  <script>
    let arr = ['red', 'blue', 'yellow']
    arr.push('purple', 'green')
    console.log(arr)
  </script>
</body>

如果想添加完新元素返回新数组的长度就直接把这个方法写在输出里面

<body>
  <script>
    let arr = ['red', 'blue', 'yellow']
    console.log(arr.push('purple', 'green'))
  </script>
</body>
.unshift() 方法增加元素

将一个或多个元素添加到数组的开头

<body>
  <script>
    let arr = ['red', 'blue', 'yellow']
    arr.unshift('purple', 'green')
    console.log(arr)
  </script>
</body>

如果想添加完新元素返回新数组的长度就直接把这个方法写在输出里面

<body>
  <script>
    let arr = ['red', 'blue', 'yellow']
    console.log(arr.unshift('purple', 'green'))
  </script>
</body>
4.删
.pop() 方法删除元素

删除数组中最后一个元素 并返回该元素的值,和增加同理

<body>
  <script>
    let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
    arr.pop()
    console.log(arr)
    console.log(arr.pop())
  </script>
</body>
.shift() 方法删除元素

删除数组中第一个元素 并返回该元素的值

<body>
  <script>
    let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
    arr.shift()
    console.log(arr)
    console.log(arr.shift())
  </script>
</body>
.splice() 方法删除指定元素

两个参数 第一个是起始位置 第二个要说明删除几个元素,如果不写第二个元素就会删除从起始位置开始的后面的所有元素

<body>
  <script>
    let arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
    arr.splice(0, 3)
    console.log(arr)
  </script>
</body>
冒泡排序:

arr.sort()也可以直接调用这个函数 升序

arr.sort(function (a, b)){

return a - b(降序变成b - a)

}

let arr = [5, 4, 3, 2, 1]
   let x
   for (let i = 0 ; i<arr.length-1 ;i++)
   {
    for (let j = 0 ;j<arr.length-1-i;j++)
   {
    if(arr[j] > arr [j+1])
    {
     x = arr[j]
     arr[j] = arr[j+1]
     arr[j+1] = x
    }
   }
   }
    console.log(arr)

二、函数

(一)介绍函数

函数被设计为执行特定任务的代码块,就是把大量出现重复的,经常出现的东西抽取封装成函数,以后需要用到的时候直接调用就行,方便复用,函数不被调用的时候是不执行的。

调用就是     函数名()

1.语法
<body>
  <script>
   function 函数名() {
    函数体
   }
  </script>
</body>
2.命名规范

和变量命名基本一致

小驼峰

前缀为动词

常见函数命名动词
can执行某个动作
has是否含义某个值
is是否为某个值
get获得某个值
set设置某个值
load加载数据

3.函数传参

在函数里面可以放用户的参数  下面括号里面的

a, b 就是形参(形式参数)

形参只在函数内部生效不用声明

最好给形参一个默认值,程序会更加严谨

用户输入的是实参(实际参数)

<body>
  <script>
    let a = 1
    let b = 2
    console.log(getadd(a = 0, b = 0))
    function getadd(a, b) {
      return a + b
    }
  </script>
</body>
4.函数返回值 return

把值返回给用户,而不是直接打印出文字,当函数执行return时将不会执行函数后面的语句结束函数

return 后面的数据必须写在同一行

不一定每个函数都要return 没有return的函数默认返回 undefined

return 数据

相当于函数被赋值为20

fn() = 20

<body>
  <script>
    function fn() {
      return 20
    }
    let re = fn()
  </script>
</body>

如何用 return 返回多个数据 返回数组即可 因为数组可以储存多个数据

<body>
  <script>
    function getmax(arr = []) {
      let max = arr[0]
      let min = arr[0]
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] > max) {
          max = arr[i]
        }
        if (arr[i] < min) {
          min = arr[i]
        }
      }
      return [max, min]
    }
    console.log(getmax([5, 5, 8, 5, 9])[0])
    console.log(getmax([5, 5, 8, 5, 9])[1])
  </script>
</body>
5.函数作用域

一段程序代码的可用范围,减少了名字冲突,不同作用域下可以重名,重名找最近的

全局作用域

全局有效,在script标签内部定义的变量

局部作用域

在函数内部有效,函数内部的形参也被看作局部变量

特殊情况

如果函数内部 变量没声明直接赋值,也被看作全局变量 但是非常不推荐去使用

6.函数注意事项

有两个相同函数名的函数 后面的函数会覆盖前面的函数

实参的个数可能和形参的个数不一致(尽量别这样)

实参余形参时 按顺序多余的直接舍弃 不参与运算

实参余形参时 基本是都是NaN

函数遇到return就结束了 

和break的区别: break 是结束循环 return是结束函数

(二)匿名函数

1.具名函数

有具体名字的函数

2.匿名函数

没有名字的函数不能直接使用

函数表达式

将匿名函数赋值给一个变量,然后可以通过变量名进行调用,我们称这个为函数表达式

<body>
  <script>
  let fn = function(x, y) {
   console.log(x + y)
  }
  fn(1, 2)
  </script>
</body>

和具名函数的区别:

具名函数可以在任何位置调用

函数表达式必需先声明后使用,就是只能在在表达式后面调用

立即执行函数

避免全局变量之间的污染,先写两个小括号,然后在第一个小括号里面写一个函数,而且立即执行函数必须以分号结尾,最后那个小括号起到调用前面的函数的作用

后面小括号里面是实参 前面小括号里面是形参

立即执行函数无需调用立即执行

<body>
  <script>
    (function () {
      let num = 10
    })();
    (function () {
      let num = 20
    })();
  </script>
</body>

第二种写法

<body>
  <script>
   (function() {}());
  </script>
</body>

 (三)逻辑中断

当出现 || 或 && 时 会出现逻辑中断的现象

&& 逻辑与 第一个数是假的后面语句就不再执行了

|| 逻辑与 第一个数是真的后面语句就不再执行了

console.log(11 && 22) 当都为真时返回最后一个真值 (与运算)

console.log(11 || 22) 当都为真时返回第一个真值 (或运算)

<body>
  <script>
    function getAdd(a, b) {
      a = a || 0
      b = b || 0
      return a + b
    }
  </script>
</body>

 三、转换成布尔类型

 (一)转换成布尔类型为假的数据类型

字符串只有空的时候布尔类型为假

数字只有零的时候布尔类型为假

underfined 转换成布尔类型为假

null 转换成布尔类型为假

NaN 转换成布尔类型为假

(二)隐式转换

有字符串的加法 “”+1 结果是 “1”

加法只能用于数字 如果两边有空字符串 “”会转换成 0

null 经过数字转换会变成0

underfined 经过数字转换之后变成 NaN

 LAST : 练习

用户输入一定的秒数 换算成 时分秒

界面展示:

代码如下:

<body>
  <script>
    function getTime(x = 0) {
      let a = (x - x % 3600) / 3600
      let a1 = x % 3600
      let b = (a1 - a1 % 60) / 60
      let b1 = a1 % 60
     a = a < 10 ? '0' + a : a
     b = b < 10 ? '0' + b : b
     b1 = b1 < 10 ? '0' + b1 : b1
      return [a, b, b1]
    }
    let arr = getTime(+prompt('请输入秒数'))
    document.write(`计算之后的时间是${arr[0]}小时${arr[1]}分${arr[2]}秒`)
  </script>
</body>

标签:arr,console,函数,JavaScript,第三天,学习,let,return,log
From: https://blog.csdn.net/qq_63342197/article/details/136760309

相关文章

  • JavaScript学习 第一天
    一、什么是JavaScript(一)介绍是一种运行在浏览器的编程语言,进行人机交互(二)可以做什么可以做网页特效,表单验证,进行数据交互,还有服务端编程node.js(三)组成由ECMAScript和WebAPIs组成其中WebAPIs由DOM和BOM组成ECMAScript:js基础语法知识WebAPIs:DOM:操作文......
  • 动态代理和反射的基本学习
    今天在跟着视频学习的时候发现老师讲的知识点都只简单的了解过但是没有深入学习,导致在跟着视频敲代码的时候完全不知道自己是在写什么东西。所以决定先把基础补一补再继续跟老师做项目。打算先把自定义注解的编写和解析学好,想要学号这一块,又涉及到了Aop和java中反射的学习,那么话......
  • 初级Android开发学习笔记(三)图形用户界面设计-按钮Button
      按钮Button及按钮处理事件        按钮Button用于处理人机交互的事件,在一般应用程序中常常会用到。由于按钮Button是文本标签TextView的子类,按钮Button继承了文本标签TextView所有的方法和属性。其继承关系如图所示。    按钮Button在程序设计......
  • 高架学习笔记之软件工程基础
    目录一、软件工程二、软件过程模型三、瀑布模型四、原型模型五、螺旋模型六、增量模型七、构建组装模型八、敏捷模型九、统一过程模型(RUP)十、软件能力成熟度模型一、软件工程    计算机刚刚投入实际使用时,软件基本上是在指定的计算机上由个人进行设计、使用以......
  • 编译实践学习 Part2
    本文以CCBY-SA4.0协议发布。闲话重写了Part1里因为手滑而删除的AST。LunarVimIDE,你值得拥有(代码传上了github(推荐https://mirror.ghproxy.com加速).KoopaIR遍历AST,然后根据KoopaIR语法输出字符串。发现std::ostringstream还挺好用。比如:constexprconst......
  • 政安晨:【深度学习处理实践】(八)—— 表示单词组的两种方法:集合和序列
    咱们接着这个系列的上一篇文章继续:政安晨:【深度学习处理实践】(七)——文本数据预处理https://blog.csdn.net/snowdenkeke/article/details/136697057机器学习模型如何表示单个单词,这是一个相对没有争议的问题:它是分类特征(来自预定义集合的值),我们知道如何处理。它应该被编码......
  • 机器学习 - PyTorch里的aggregation
    在PyTorch里,可以在tensor里找到min,max,mean,sum等aggregation值。直接上代码importtorchx=torch.arange(0,100,10)print(x)print(f"Minimum:{x.min()}")print(f"Minimum:{torch.min(x)}")print(f"Maximum:{x.max()}")print(f"Maxi......
  • ARM-V8基础知识学习笔记(一)
    参考文章:ARM官方文档ARMv8架构概述、相关技术文档以及ARMv8处理器简介ARMv8架构编程探索ARMv8架构与指令集.学习笔记 ARM异常等级:在ARMv8中,执行发生在四个异常级别之一。在AArch64中,异常级别决定了特权级别,类似于ARMv7中定义的特权级别。异常级别决定特权级别,因此在......
  • [算法学习笔记] 传递闭包
    DescriptionWarning:本文只介绍传递闭包在OI中的简单应用。传递闭包在OI中,一般用来处理图上点之间的连通性问题。它在图上体现在原图上任意两个直接或者间接可达的点都连边。在上图中,显然\(\{1,2\}\{2,3\}\{1,3\}\)均可达。在“传递闭包图”上如上三对点对都需要连边。......
  • 动手学习Deep learning-数据预处理
    数据预处理:importosos.makedirs(os.path.join('..','data'),exist_ok=True)#自动读取该代码文件的文件位置,并返回上级目录创建data文件data_file=os.path.join('..','data','house_tiny.csv')#创建CSV文件withopen(data_file,'w......