数组 & 对象 & 函数
数组
数组也是一个对象,不同的是对象用字符串作为属性名,而数组用数字作为索引,数组的索引从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);
数组 & 对象 & 函数的更多相关文章
- JS 字符串对象 数组对象 函数对象 函数作用域
一.内置对象 object对象:ECMAScript 中的所有对象都由这个对象继承而来:Object 对象中的所有属性和方法都会出现在其他对象中 ToString() : 返回对象的原始字符串表示.V ...
- JavaScript 中有关数组对象的方法
JS 处理数组多种方法 js 中的数据类型分为两大类:原始类型和对象类型. 原始类型包括:数值.字符串.布尔值.null.undefined 对象类型包括:对象即是属性的集合,当然这里又两个特殊的对象 ...
- php如何遍历多维的stdClass Object 对象,php的转换成数组的函数只能转换外面一丛数组
php如何遍历多维的stdClass Object 对象,php的转换成数组的函数只能转换外面一丛数组 (2012-09-10 19:58:49) 标签: 杂谈 分类: 网页基础知识 php如何遍历多 ...
- js中的函数,Date对象,Math对象和数组对象
函数就是完成某个功能的一组语句,js中的函数由关键字 function + 函数名 + 一组参数定义;函数在定义后可以被重复调用,通常将常用的功能写成一个函数,利用函数可以使代码的组织结构更多清晰. ...
- js--基础(对象、数组、函数、if语句、while语句、do while语句、continue语句、break语句)
三.流程控制:1.单行语句var age =20;//单行语句 2.复合语句花括号包含起来的与聚集和叫做复合语句,一对花括号表示一个复合语句 ,处理时可以当成一个单行语句来看待,一般复合句与叫做代码块 ...
- js-用于检测类数组对象的函数
//判定o是否是一个类数组对象 //字符串和函数有length属性,但是它们 //可以用typeof检测将其排除.在客户端JavaScript中,DOM文本节点 //也有length属性,需要用额外判 ...
- JS对象 JavaScript 中的所有事物都是对象,如:字符串、数值、数组、函数等,每个对象带有属性和方法。
什么是对象 JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的,如:字符串的长度.图像的长宽等: 对象的方法: ...
- JS的数据类型判断函数、数组对象结构处理、日期转换函数,浏览器类型判断函数合集
工具地址:https://github.com/BothEyes1993/bes-jstools bes-jstools 100多个基础常用JS函数和各种数据转换处理集合大全,此工具包是在 outil ...
- JavaScript -基础- 函数与对象(三)数组对象
一.数组对象 1.创建方式 1)创建方式一 var arr=[1,2,3]; 2)创建方式二 var arr2=new Array(1,2,3); 注意: 数组中可以存储任何数据类型.方法类型(Jav ...
随机推荐
- python多线程与threading模块
python多线程与_thread模块 中介绍了线程的基本概念以及_thread模块的简单示例.然而,_thread模块过于简单,使得我们无法用它来准确地控制线程,本文介绍threading模块,它提 ...
- Microfacet模型采样下的brdf
本文前言 在学习图形学(games101 from bilibili)的时候,也遇到了像这样的问题,Cook-Torrance模型无法实现粗糙度为0时,物体微表面呈现绝对镜面的效果(呈现出一面镜子), ...
- 小白学习Python英语基础差怎么办,都帮你想好拉!看这里
运算符与随机数 1.module:模块 2.sys(system):系统 3.path:路径 4.import:导入 5.from:从- 定义函数与设定参数 1.birthday:出生日期 2.yea ...
- github注册教程最新版(十年程序员保姆级教程)
您可以在墨抒颖的网站体验本文章的纯净版 准备 拥有一个可以接受信息的邮箱即可 开始 点击github官网github step1.进入注册页面 点击Sign Up进入注册流程 step2.输入邮箱 这 ...
- 深入理解JAVA虚拟机《二》
对象.内存回收和垃圾收集算法 一.引用计数算法(不可靠) 现在很多比较普遍的判断对象是否存活的算法就是引用计数算法,其大概原理是:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当 ...
- 新一代容器平台ACK Anywhere,来了
5G.AR.AIoT 等场景在推动新一代云架构的演进,而容器重塑了云的使用方式. 近日,阿里云容器服务全面升级为ACK Anywhere,让企业在任何需要云的地方,都能获得一致的容器基础设施能力. 早 ...
- TWAIN-v2.4-说明文档翻译(1)介绍
介绍 Introduction 一致性需求(Need for Consistency) 对于扫描仪,数字摄像仪,以及其他图像获取设备,用户渴望发现将图像合并到他们的文档以及其他工作的价值.然而,支持展 ...
- Pytorch学习2020春-1-线性回归
线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 线性回归的基本要素 模型 为了简单起见,这里我们假设价格只取决于房屋状况的两个因素, ...
- c++ fstream feekg讨论
#include <iostream> #include <fstream> using namespace std; int main() { std::ifstream f ...
- OGG-如何只同步最近某个时间范围的数据
一.需求,某客户希望使用OGG只同步时间大于2021-02-01日期之后的数据变换 需求如标题所示,如何使用OGG进行配置? 客户环境需要同步的表有几百G,表数据太大了;如果同步所有数据,目标库空间存 ...