数组

数组也是一个对象,不同的是对象用字符串作为属性名,而数组用数字作为索引,数组的索引从0开始

创建数组:

//方式一:构造器,可以在创建数组时指定	Var arr = new Array(1,2,4,6,7);

//方式二:字面量(推荐),可以在创建数组时指定元素
Var arr = [1,2,4,6,7];

区别:

 arr1 = new Array(10)   //创建长度为10的数组
arr2 = [10] //创建数组,数组只有一个元素10

添加元素

数组名[索引] = 值;
例:arr[0] = 10;

读取元素

//数组名[索引]
arr[0];

数组角标从0开始,如果读取不存在的值,不会报错,而是返回undefined

数组的长度

arr.length

注意:

  • 数组索引从0 开始

  • 如果跳跃式添加元素,中间元素也存在,值为空

  • 数组长度可设定,设置过大自动填充,过小则会截取

  • 数组元素可以为任意数组类型,包括数组、对象和函数

向最后一个位置添加元素:

arr.push("")
//或
arr[arr.length] = 值;

JS数组常用方法

push() :向数组的末尾添加一个或多个元素,并返回新的长度。

unshift() :向数组的开头添加一个或更多元素,并返回新的长度,其他 元素索引也会随之更改

Var arr = [];
var result = arr.push("丸子","莉香");
console.log(arr); //"丸子,莉香"
console.log(result); //2

该方法会将新数组的长度作为返回值返回

pop() :删除并返回数组的最后一个元素

shift() :删除并返回数组的第一个元素

var result = arr.pop();
console.log(result); //莉香,即删除的对象
console.log(arr); //"丸子"

数组的遍历

for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}

对象

在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。

声明

1、构造器

var obj = new Object();

2、字面量

声明对象可直接添加属性 (属性名:属性值)

//空对象
var obj1 = {} //声明带属性的对象
var obj = {
name:"莉香",
age:23,
gender:"仙女"
}

字面量赋值用冒号

3、利用构造函数创建对象

function 构造函数名(形参1,形参2,形参3...) {
this.属性名1 = 参数1;
this.属性名2 = 参数2;
this.属性名3 = 参数3;
this.方法名 = 函数体;
}
// 工厂函数创建对象 这个把创建好的对象返回给函数调用处
function createPerson(name, age, job) {
var person = new Object();
person.name = name;
person.age = age;
person.job = job;
person.sayHi = function(){
console.log('Hello,everyBody');
}
return person;
}
var p1 = createPerson('张三', 22, 'actor');

注意:

  • 构造函数约定首字母大写
  • 函数内的属性和方法前面需要添加this,表示当前对象的属性和方法
  • 构造函数中不需要retrun返回结果

new关键字的作用(面试题)

  • 在构造函数代码开始执行之前,创建一个空对象;
  • 修改this的指向,把this指向创建出来的空对象;
  • 执行构造函数内的代码,给这个新对象添加属性和方法
  • 在函数完成之后,返回这个创建出来的新对象(所以构造函数里面不需要return)

添加/修改属性

//对象.属性名 = 属性值;
var obj = new Object();
obj.name = "丸子"; //添加属性
obj.gender = "男"; //对象['属性']
obj['name'] = "莉香" //修改属性

js中属性声明和赋是同时进行的

获取对象属性:

对象.属性名
console.log(obj.name);

读取对象中没有的属性不会报错而是返回undefined

删除对象的属性:

delete 对象名.属性名

使用特殊值作为属性名

不能使用 . 的方式,需要使用另一种方式:

对象名["属性名"] = 属性值

注意:

  • 对象字面量的属性名可以加引号也可以不加,建议不加
  • 属性名和属性值是键值对结构,多个键值对之间使用逗号隔开 ,最后一个键值对之后不要加逗号

遍历

in运算符

检查对象中是否含有指定属性,有则返回true,没有返回fasle

语法:属性名 in 对象

console.log("name" in obj)     //true
//i为数组索引
for(let k in obj){
console.log(obj[k])
}

of运算符

//item为数组中数据
for(let item in this.books){
totalPrice += item.price * item.count
}

函数

「1. 函数的概念」

封装了一段可被重复调用执行的代码块,通过函数可以实现大量代码的重复使用。函数是一种数据类型。

函数的声明

1、 通过function关键字定义函数 -- 命名函数

function 函数名() {
//函数体代码
}

注意:function 是声明函数的关键字,必须小写

2、通过函数表达式定义函数 -- 匿名函数

var fn = function() {};

//调用
fn();
//匿名函数使用的第2种方式--匿名函数自调用
(function(){
alert(123);
})();

注意:

  • fn是变量名,不是函数名,只不过变量存储的是函数
  • 函数表达式创建的函数可以通过 变量名(); 来调用
  • 函数声明后调用才会执行函数体代码

函数的参数

  • 形参:函数定义时候,传递的参数(实参值传递给形参,不用声明的变量)
  • 实参:函数调用时候,传递的参数
  //带参数的函数声明
function 函数名(形参1,形参2,形参3...) {
//函数体
}
// 带参数的函数调用
函数名(实参1,实参2,实参3...);

「函数形参和实参数量不匹配时」

参数个数 说明
实参个数等于形参个数 输出正确结果
实参个数多于形参个数 只取到形参的个数
实参个数小于形参 多的形参定义为undefined
function getSum(a, b, c) {
return a + b + c;
}
// js中形参的默认值是undefined。
// 调用函数
var n = getSum(1, 2);// n = NaN
var n = getSum(1, 2, 3, 4); //1 + 2 +3 = 6

函数的返回值

返回值:函数调用整体代表的数据;函数执行完成后可以通过return语句将指定数据返回 。

// 声明函数
function 函数名() {
...
return 需要返回的值;
// 1. 函数遇到return会停止执行,并返回指定的值
// 1. 如果函数没有return 返回的值是undefined
}
// 调用函数
函数名(); //此时调用函数就可以得到函数体内return的值

break & continue & return

  • break: 结束当前的循环体 (如for、while)
  • continue: 跳出本次循环,继续执行下次循环
  • return: 不仅可以退出(函数体内)循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码
function breakDown() {
for (var i = 0; i < 10; i++) {
if (i == 5) {
return 1;
}
console.log(i);
}
}
breakDown(); //1
  • return只能结束函数体内的代码
  • 函数如果有return 则返回的是 return 后面的值
  • return d,a,b;返回的是b的值
  • 如果函数没有 return语句,则返回undefined

arguments的使用

当不确定有多少个参数传递的时候,可以用 arguments 来获取。arguments是当前函数的一个内置对象。所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参。arguments展示形式是一个伪数组,因此可以进行遍历。

伪数组具有以下特点:

  • 具有length属性

  • 按索引方式存储数据

  • 不具有数组的push,pop等方法

 function fn() {
//arguments 里面存储了所有传递过来的实参
console.log(arguments);// [1,2,3...]
console.log(arguments[1]); // 2
console.log(arguments.length); // 3 //我们可以按照数组的方式 遍历argument
}
fn(1, 2, 3);

例:

// 用伪数组 实现求最大值
function getMax() {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > arguments[0]) {
max = arguments[i];
}
}
return max;
}
var result = getMax(1,3,77,5,85)
colsole.log(result);

数组 & 对象 & 函数的更多相关文章

  1. JS 字符串对象 数组对象 函数对象 函数作用域

    一.内置对象 object对象:ECMAScript 中的所有对象都由这个对象继承而来:Object 对象中的所有属性和方法都会出现在其他对象中 ToString() : 返回对象的原始字符串表示.V ...

  2. JavaScript 中有关数组对象的方法

    JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象 ...

  3. php如何遍历多维的stdClass Object 对象,php的转换成数组的函数只能转换外面一丛数组

    php如何遍历多维的stdClass Object 对象,php的转换成数组的函数只能转换外面一丛数组 (2012-09-10 19:58:49) 标签: 杂谈 分类: 网页基础知识 php如何遍历多 ...

  4. js中的函数,Date对象,Math对象和数组对象

    函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...

  5. js--基础(对象、数组、函数、if语句、while语句、do while语句、continue语句、break语句)

    三.流程控制:1.单行语句var age =20;//单行语句 2.复合语句花括号包含起来的与聚集和叫做复合语句,一对花括号表示一个复合语句 ,处理时可以当成一个单行语句来看待,一般复合句与叫做代码块 ...

  6. js-用于检测类数组对象的函数

    //判定o是否是一个类数组对象 //字符串和函数有length属性,但是它们 //可以用typeof检测将其排除.在客户端JavaScript中,DOM文本节点 //也有length属性,需要用额外判 ...

  7. JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。

    什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...

  8. JS的数据类型判断函数、数组对象结构处理、日期转换函数,浏览器类型判断函数合集

    工具地址:https://github.com/BothEyes1993/bes-jstools bes-jstools 100多个基础常用JS函数和各种数据转换处理集合大全,此工具包是在 outil ...

  9. JavaScript -基础- 函数与对象(三)数组对象

    一.数组对象 1.创建方式 1)创建方式一 var arr=[1,2,3]; 2)创建方式二 var arr2=new Array(1,2,3); 注意: 数组中可以存储任何数据类型.方法类型(Jav ...

随机推荐

  1. 鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的 | 百篇博客分析OpenHarmony源码 | v7.07

    百篇博客系列篇.本篇为: v07.xx 鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调 ...

  2. P3645-[APIO2015]雅加达的摩天楼【bfs,根号分治】

    正题 题目链接:https://www.luogu.com.cn/problem/P3645 题目大意 \(n\)个点,\(m\)条狗,第\(i\)条狗可以往左或者右跳恰好\(p_i\)步,开始是\( ...

  3. Python:PNG图像生成MP4

    Python:PNG图像生成MP4 需求 需要将多张*.PNG图像,生成mp4格式的视频文件. 实现 利用Python中image库生成*.gif格式图像,但是图片未经压缩,文件体量较大. movie ...

  4. 带你读Paper丨分析ViT尚存问题和相对应的解决方案

    摘要:针对ViT现状,分析ViT尚存问题和相对应的解决方案,和相关论文idea汇总. 本文分享自华为云社区<[ViT]目前Vision Transformer遇到的问题和克服方法的相关论文汇总& ...

  5. Bert文本分类实践(二):魔改Bert,融合TextCNN的新思路

    写在前面 ​ 文本分类是nlp中一个非常重要的任务,也是非常适合入坑nlp的第一个完整项目.虽然文本分类看似简单,但里面的门道好多好多,博主水平有限,只能将平时用到的方法和trick在此做个记录和分享 ...

  6. 迁移appseting.json创建自定义配置中心

    创建一个自定义的配置中心,将框架中各类配置,迁移至数据库,支持切换数据库,热重载. 说在前面的话 自使用.net Core框架以来,配置大多存在json文件中: [框架默认加载配置]文件为appset ...

  7. 洛谷4051 JSOI2007 字符加密(SA)

    真是一道良好的SA模板题 首先,由于涉及到从左边移动到右边这个过程,我们不妨直接把字符串复制一遍,接在后面. 然后直接构造后缀数组,按排名从小到大,枚举所有的位置,如果这个后缀的起始点是在原串中的,那 ...

  8. 【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志

    问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linu ...

  9. Linux服务器装Anaconda&TensorFlow

    远程Linux服务器装Anaconda&指定版本TensorFlow 说明: 由于疫情影响,原先使用的服务器已断电,故重选了一台服务器对环境重选进行搭建,正好补上这篇博文. 01 下载Anac ...

  10. [no_code][Beta]发布声明报告

    $( "#cnblogs_post_body" ).catalog() 软件下载 一个全新的超简易的OCR表单识别工具 轻松拍照,实现手写表格识别 一键打开,支持多种应用打开你的表 ...