(Java高级教程)第四章必备前端基础知识-第三节2:JavaScript数组、函数和对象

article/2024/6/13 22:18:03

文章目录

  • 一:数组
  • 二:函数
  • 三:对象

一:数组

数组:JavaScript中的数组和Java中的ArrayList有点相似,可以动态扩容,并且由于它是动态类型的语言,所以数组内的元素类型不要求一定是相同

创建数组

// 创建数组方式1(不常用)  
var arr1 = new Array();  // 创建数组方式2(常用)  
var arr2 = [];  
var arr3 = [1, '2', false];  console.log(arr2)  
console.log(arr3)

在这里插入图片描述

获取数组元素

var arr = ['张三', '李四', '王麻子'];  
console.log(arr);  
console.log(arr[0]);  
console.log(arr[1]);  
console.log(arr[2]);  
arr[2] = '赵倩';  
console.log(arr)

在这里插入图片描述

访问数组元素时,如果发生了越界,在JavaScript中不会报错,而是会返回一个undefined

var arr = ['张三', '李四', '王麻子'];  
console.log(arr);  
console.log(arr[0]);  
console.log(arr[1]);  
console.log(arr[2]);  
console.log(arr[3]);  
arr[2] = '赵倩';  
console.log(arr)

在这里插入图片描述

虽然在访问时出现了越界,但是我仍然能够为这个越界的元素进行赋值,因为JavaScript是动态语言。这里将数值放得大一点,你会发现前面的没有设定的部分均为undefined

var arr = ['张三', '李四', '王麻子'];  
console.log(arr);  
console.log(arr[0]);  
console.log(arr[1]);  
console.log(arr[2]);  
arr[100] = '赵倩'  
console.log(arr[100]);  
console.log(arr)

在这里插入图片描述

JavaScript中的数组不仅仅是一个数组,而且还能起到map的作用,例如可以加入负索引,让其和某个值进行映射

var arr = ['张三', '李四', '王麻子'];  
console.log(arr);  
console.log(arr[0]);  
console.log(arr[1]);  
console.log(arr[2]);  
arr['姓名'] = '旺财';  
console.log(arr.姓名)  
console.log(arr)

在这里插入图片描述

数组元素的插入和删除

①尾插和尾删:pushpop

var arr = [9, 5, 2, 7, 3, 6, 8];  
var newArr = [];  for (var i = 0; i < arr.length; i++) {  if (arr[i]%2 !=0){  newArr.push(arr[i]);  }  
}  
console.log(newArr)  
newArr.pop()  
newArr.pop()  
console.log(newArr)

在这里插入图片描述

②任意位置插入和删除(本质功能是替换):splice

  • 第一个参数:表示取数组的起始下标
  • 第二个参数:表示取数组的长度。如果为0则表示不对数组原来内容做出调整
  • 第三个参数:要替换到数组指定范围的新的值。如果不写这个位置的参数则表示删除

例1:元素5和元素4之间插入hello

var arr = [9, 5, 4, 7, 3, 6, 8];    
console.log(arr)  
arr.splice(2, 0, 'hello');  
console.log(arr)

在这里插入图片描述

例2:元素4替换为hello

var arr = [9, 5, 4, 7, 3, 6, 8];  
console.log(arr)  
arr.splice(2, 1, 'hello');  
console.log(arr)

在这里插入图片描述

例3:元素4和元素7依次替换为helloworld

var arr = [9, 5, 4, 7, 3, 6, 8];  
console.log(arr)  
arr.splice(2, 2, 'hello', 'world');  
console.log(arr)

在这里插入图片描述

例4:元素4、7、3删除

var arr = [9, 5, 4, 7, 3, 6, 8];  
console.log(arr)  
arr.splice(2, 3);  
console.log(arr)

在这里插入图片描述

二:函数

语法格式

  • 由于是动态类型,所以不需要写返回值类型
  • 形参列表中的每个形参的类型也不必要写出
  • 一个函数可以支持多种类型的参数

在这里插入图片描述

function hello() {  console.log("hello");  
}  hello();

在这里插入图片描述

function add (x, y){  return x + y;  
}  console.log(add(1, 2));  
console.log("hello", "world");  
console.log("hello", 10)

在这里插入图片描述

关于参数个数:JavaScript并不强制要求形参个数和实参个数完全匹配

  • 如果实参个数多于形参个数,则多出来的参数丢弃
  • 如果实参个数少于形参个数,在多出来的形参为undefined

arguments:在一个函数内部arguments是一个数组,它保存了所传入的实参

function add() {  var ret = 0;  for (var i = 0; i < arguments.length; i++) {  ret += arguments[i];  }  return ret;  
}  console.log(add(1, 2, 3, 4, 5, 6, 7));

在这里插入图片描述

函数表达式:JavaScript中函数是一等公民,函数可以像普通变量那样进行赋值,还以可以作为另一个函数的参数或者另一个函数的返回值。后面的function()定义了一个匿名函数

var add = function() {  var ret = 0;  for (var i = 0; i < arguments.length; i++) {  ret += arguments[i];  }  return ret;  
}  console.log(add(1, 2, 3))

在这里插入图片描述

作用域:JavaScript中作用域分为

  • 全局作用域:在整个script标签或单独的js文件中生效
  • 函数作用域:在函数内部生效
// 全局变量  
var num = 10;  
console.log(num)  
function test() {  var num = 20;  console.log(num);  
}  function test2() {  var num = 30;  console.log(num);  
}  
test()  
test2()  
console.log(num);

在这里插入图片描述

作用域链:JavaScript中函数可以定义在函数内部,内层函数可以访问外层函数的局部变量,查找时会逐层向外查找

  
var num = 1;  
function test1() {  var num = 10;  function test2() {  var num = 20;  console.log(num);  }  test2()  console.log(num)  
}  test1()

在这里插入图片描述

三:对象

对象:JavaScript面向对象部分和Java面向对象基本相似,只是在语法层面有些差别,甚至来说有些简化

创建对象的方法

①:使用字面量创建对象(常用)

  • 使用{}创建对象
  • 属性和方法使用键值对的形式来组织
  • 注意方法的值是一个匿名函数
  
// 空对象  
var test = {};  // 创建一个对象  
var student = {  name: "张三",  height: 185,  weight: 160,  sayHello: function() {  console.log("hello");  }  
};  // 使用对象的属性和方法  
console.log(student.name);  
console.log(student["height"]);  
student.sayHello();

在这里插入图片描述

②:使用构造函数创建对象:构造函数可以很方面的通过一个模板创建出多个对象。语法格式如下

function 构造函数名(形参) {this.属性 =this.方法 = function..
}
var obj = new 构造函数名(实参)

举个例子

function Student(name, age, content) {  this.name = name;  this.age = age;  this.say = function (){  console.log(this.name, content);  }  
}  var obj1 = new Student("张三", 18, "你好");  
var obj2 = new Student("李四", 28, "拜拜");  
var obj3 = new Student("王五", 21, "好的");  console.log(obj1);  
obj1.say();

在这里插入图片描述


http://www.ngui.cc/article/show-845532.html

相关文章

八字-十天干、十二地支、六十甲子

六十甲子是十天干与十二地支的组合&#xff0c;60为一周期&#xff0c;用年、月、日、时四个柱子撑起时间的大厦&#xff0c;所以年月日时也称四柱&#xff1a;甲子&#xff0c;乙丑,……&#xff0c;葵亥&#xff08;一共60&#xff09;。 十天干&#xff1a;甲乙丙丁卯己庚辛…

Shiro学习文档

Shiro Java安全框架 1.什么是权限管理 ​ 基本上涉及到用户参与的系统都要进行权限管理&#xff0c;权限管理属于系统安全的范畴&#xff0c;权限管理实现对用户访问系统的控制&#xff0c;按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理…

实时即未来,大数据项目车联网之驾驶行程主任务定义【十六】

文章目录 1. 驾驶行程入库1.1 驾驶行程主任务定义1.2 自定义驾驶行程window function1.3 驾驶行程分析结果数据写入hbase1. 驾驶行程入库 驾驶行程数据筛选入库,为第六节的行程指标的分析数据 驾驶行程入库结果字段: vin :车架号 lastSoc:上次报文soc lastMileage:上次报文…

力扣1073. 负二进制数相加 C++

思路 正常如果看二进制不太好看出来规律&#xff0c;得拆开看 如 [1,1,1,1,1][1,0,1]列竖式也看不出来啥 列成这样 (-2)^4(-2)^3(-2)^2(-2)^1(-2)^0(-2)^2 (-2)^0可以看出来两个(-2)2和(-2)0 两个可以变成2^3和2&#xff0c;就可以和前面一位的1抵消&#xff0c;同时这…

记一次nginx崩溃事件

一、事件描述 2023年春节复工第一天&#xff0c;项目组同事反馈说业务系统中图像处理代理Nginx服务于1月23日发生崩溃&#xff0c;完成了重启操作&#xff0c;检查nginx的日志有如下报错&#xff1a; 2023/01/23 11:07:07 [crit] 3237#3237: *2253009 pwritev() "/var/c…

mysql:如何在windows环境下配置并随意切换两种mysql版本

系列文章目录 文章目录系列文章目录前言一、去官网下载zip安装包二、配置创建my.ini文件2.环境变量3、使用管理员身份打开dos命令窗口4、安装mysql8的服务和初始化data5、启动6 错误解决&#xff1a;修改mysql8服务的注册表最后前言 之前安装过5.7的版本 后来由于需要 就安装了…

【Ambari】ambari中添加新服务

背景 栈的定义可以在源代码树中找到/ambari-server/src/main/resources/stacks。当你安装Ambari Server服务之后&#xff0c;栈的定义可以被发现/var/lib/ambari-server/resources/stacks。 结构 一个栈的结构定义如下 |_ stacks|_ <stack_name>|_ <stack_version…

云原生 | Kubernetes - kubectl 备忘单

目录 Kubectl 自动补全 BASH ZSH 关于 --all-namespaces 的一点说明 Kubectl 上下文和配置 Kubectl apply 创建对象 查看和查找资源 更新资源 部分更新资源 编辑资源 对资源进行伸缩 删除资源 与运行中的 Pod 进行交互 从容器中复制文件和目录 与 Deployments …

学习记录675@项目管理之风险管理案例

之前觉得风险管理章节废话太多就没有单独一篇文章记录&#xff0c;但是这个案例还是考到了风险管理的知识&#xff0c;所以借着这个案例梳理下一些重要的知识。 案例 某市石油销售公司计划实施全市的加油卡联网收费系统项目。该石油销售公司选择了系统集成商Simple 公司作为项…

实现文件拷贝,例如将1.c中的内容拷贝到2.c中;

实现文件拷贝&#xff0c;例如将1.c中的内容拷贝到2.c中&#xff1b;通过命令行传参的方式&#xff0c;传入文件名;计算一个文件的大小. 封装成函数通过命令行传参的方式&#xff0c;传入文件名; 统计一个文件有几行。封装成函数代码&#xff1a;#include <stdio.h> //封…