JavaScript基础知识(5)

【p5.js学习笔记】码绘的基础知识 目录 一、绘前准备 1. 准备画布: createCanvas(720, 400); 2. 设置背景颜色:background(r,g,b,a); / background(gray) 3. 是否绘制形状:noStroke(); /noFill(); 二、选择绘制模式 1. 绘制边框:stroke(r,g,b,a); 2. 填充边框:fill(r,g,b,a); 三、绘制基础... 阅读详情
回顾:
 循环三要素:
 1.循环条件:继续循环的条件
 2.循环变量:循环条件中用作判断的变量,向着循环退出的趋势不断变化,充当循环计数器
 3.循环体:

 while:不确定循环次数,或者循环变量的变化规律不固定
 do while:如果第一次条件即使不满足,也要执行一次
 for:循环次数确定,循环变量变化规律固定

 var i=0;
 while(i<10){
 i++;
 }
 console.log(i);     //10


 var i=0;
 do{
 i++;
 }while(i<10)
 console.log(i);     //10


 var i=100;
 while(i<10){
 i++;
 }
 console.log(i);     //100


 var i=100;
 do{
 i++;
 }while(i<10)
 console.log(i);     //101



 正课:

 程序=数据结构+算法
 良好的数据结构,可以极大提高程序的执行效率!

 数组(array):
     存储:连续存储多个数据的存储空间
     使用:相当于多个变量的集合

 为什么要使用数组:因为现实中数据都是批量分类管理。
 何时使用:只要批量管理多个数据,就要用数组保存
 如何使用:创建,初始化,访问数组中的数据
 创建:数组都是用[]创建出来的。

 var arr=[];   -->创建了一个数组对象,数组中包含0个元素
 var arr=[95,61,99];  -->创建了一个数组对象,数组中连续存储3个元素:95,61,99
 js中数组2个不限制:不限制元素个数、不限制元素数据类型



 数组是引用类型的对象。
 原始类型:数据保存在变量本地。
 引用类型:数据不保存变量本地,保存在“堆”中。
 在“堆”中保存的数据都是由地址指向实际数据。

 原始类型中只能保存1个值,但是现实生活中1个值无法精确描述一个东西,需要用多个属性共同描述一样东西。
 引用类型特点:可以保存多个数据,而且数据个数随时变化


 例:
 var week=["日","一","二","三","四","五","六"];
 栈中创建一个变量空间:名为week
 堆中创建一个大存储空间:地址可能是0x901
 栈中变量中存储的是实际数据
 week变量“引用了”堆中的一个数组对象

 对象:凡是存储在堆中的,都是对象!
 元素是对象里面的内容。

 如何使用引用类型的对象:使用变量,等效于使用对象的地址;使用对象地址,等效于使用对象本身。

 数组对象支持直接输出数组内容。


 其他数组创建语法:不推荐使用,容易有歧义:
 var arr=new Array(num);
 注释:   new:说明要在堆总开辟空间
          Array:ECMAScript标准中的内置类型
          new Array:在堆中创建一个数组类型的存储区域
          (num):初始创建num个元素
 如果元素类型没有初始化,每个元素默认类型就是undefined,但是undefined在输出时都会变为一个空字符
 var arr=new Array(7);则-->[undefined,undefined,undefined,undefined,undefined,undefined,undefined]

 另一种创建方法:
 var arr=new Array(元素1,元素2,...元素n);


 null:代表一个变量没有指向任何对象。
 何时使用null:主动释放对象时使用。主动释放的对象不能被找回。

 null和undefined区别:null专用于主动释放对象,undefined专用于自动初始化任何未赋值的变量

 垃圾回收:js引擎自动销毁不再被引用的对象。
 垃圾回收程序:随js程序运行而后台同时运行


 只要见到中括号[],就会重新创建新的对象。如同时创建了两个对象赋值给同一个变量,那么原来的那个对象就会被释放,指向新的对象。但是只要对象还有变量引用,就不回收。

 week=["SUN","MON","TUS","SAT"];
 新创建一个数组对象
 将新对象地址保存到原week变量中替换旧地址
 旧数组对象释放,等待垃圾回收
 注意:如果旧数组对象还在占用,则不会回收。
 week变量“引用了”新数组对象

 语句
 var week=["日","一","二","三","四","五","六"];
 var day=week;
 此时day是一个赋值运算,day和week两个变量都指向同一个变量

 var week=["日","一","二","三","四","五","六"];
 var day=week;
 week=["SUN","MON","TUS","SAT"];
 此时的week引用了新的对象,但是day依然引用了原来的对象,所以原来的对象不会被回收。

 访问数组:数组是一组变量的集合。如何获得其中一个变量或者数据?使用下标。
 下标:数组中唯一标识一个元素的序号。从0开始,最后一个元素的下标是“元素个数-1”。

 console.log(week[4]);   //取出下标为4位置的变量,week[4]就可以当做一个变量使用,变量能做的事它都可以做,本质上就是变量

 如果下标越界,读取元素不会出错,返回undefined。

 js内置对象不但封装存储,而且封装常用API
 API:内置应用程序接口。实际上就是已经实现的方法。可以直接调用。

 Array API:
 1.  arr.length:属性,是数组的长度,返回一个数,后面没有圆括号()。返回数组中的元素个数
 应用:访问任意数组的最后一个元素:arr[arr.length-1]
 length属性值,随数组长度变化而自动变化。
 js数组可以根据程序的需要,“自动扩容”,保证程序正常执行。

 week=[];      //此时length=0
 console.log(week.length);
 week[0]="日";     
 console.log(week.length);   //此时length=1
 week[2]="二";     
 console.log(week.length);   //此时length=3,值为["日",undefined,"二"]
 week[4]="四";     
 console.log(week.length);   //此时length=5,值为["日",undefined,"二",undefined,"四"]
 document.write(week);

 数组扩容和缩容:都是设置length属性的值。如果length属性值>旧值,会扩容;反之,缩容(截断)。
 缩容后被截断的元素仍属于数组当中,仍然占用着空间,不会被回收,但是找不回来,只能随数组对象一起回收。

 固定用法:在任意数组结尾追加一个新元素,不管数组元素有多少个:arr[arr.length]=新值;
   arr.length-1是最后一个元素,arr.length就是最后一个元素后边

 例:
 var input;
 var emps=[];
 while(true){
      input=prompt("请输入员工姓名");
      if(input!="exit"){
            emps[emps.length]=input;
     }else{
           break;
           }
   }
 document.write(emps);

 上述写法可用下面的方法实现:
 var input;
 var emps=[];
 while((input=prompt("请输入员工姓名"))!="exit"){
 emps[emps.length]=input;
 }
 document.write(emps);


 栈中的变量何时消失?栈中变量的生命周期和堆完全不同,不归垃圾回收器管。
 var a=5;          //全局变量随网页生命周期
 function fun(){
   var b=10;
 }
 fun();       //作用域环境栈

 /*fun()的作用域环境栈出栈
   fun()中的局部变量,一同消失*/


 全局变量归window所有,只要网页不关掉,全局变量就不会丢掉,随网页生命周期。
 作用域环境栈:局部变量的生命周期和所在方法的作用域环境栈有关。作用域创建,局部变量一同创建。作用域结束,局部变量会一同消失。


 什么是数组遍历:对数组中的每个元素进行批量相同的操作。
 遍历数组元素:用for循环实现。
 for(var i=0;i<arr.length;i++){
 arr[i]-->拿到当前元素
 }

 例:
 var week=["日","一","二","三","四","五","六"];
 document.write(week+"<br/>");
 for(var i=0;i<week.length;i++){
 week[i]="星期"+week[i];
 }
 document.write(week);

 注意:week[i]="星期"+week[i];不能用week[i]+="星期";否则星期会加在数字后面


 关联数组:数组下标可以自定义名称,内部存的是key/value对的值。


 关联数组每个数据都有一个名字。

 何时使用关联数组:如果数组元素的内容无法描述自己的意义时,就要使用关联数组为每个元素起名。
 注意:关联数组的length属性作废了。

 for in循环:专门遍历关联数组用的!
 for(var key in arr){
   //从第一个元素开始,将元素的key赋值给临时变量key
   arr[key]  -->当前正在遍历的元素的值(value)
 }

 例:
 var fbb=[];
 fbb["姓名"]="范冰冰";
 fbb["数学"]=90;
 fbb["语文"]=61;
 fbb["英语"]=95;
 for(var key in fbb){
 document.write(key+":"+fbb[key]+"<br/>");
 }


 如果出现两个相同的赋值,前面的就会被后面覆盖掉,如:
 arr[0]=100;    //创建
 arr[0]=10;     //替换已有的位置0
 arr[4]=26;     //创建位置1,2,3,4,没有赋值的值是undefined
 arr[3]=4;      //替换原有位置的undefined

 关联数组下标用数字赋值的话会被关联扩容,如果是汉字就不会自动扩容。

 关联数组可以同时声明多个元素值(关联数组直接量定义方式):
 var arr={"key1":value1,"key2":value2,...};
 注意要用花括号

 例:
 var fbb={"姓名":"范冰冰","数学":90,"语文":61,"英语":95};
 for(var key in fbb){
 document.write(key+":"+fbb[key]+"<br/>");
 }


 创建一个函数bubbleSort(arr),使用冒泡法对数组中元素进行排序:从第一个开始,依次取出相邻两个元素进行比较,大的放在后面,小的放在前面,第一轮比较结束,最大的值就会拍到最后。以此类推进行比较。

 第一次比较:
 var arr=[5,3,2,6,4,9,8,7];
 for(var i=0; i<arr.length-1;i++){
     if (arr[i]>arr[i+1]){
          var box=arr[i];
          arr[i]=arr[i+1];
          arr[i+1]=box;

    }
 }
 document.write("<br/>"+arr);
 第j次比较
 var arr=[5,3,2,6,4,9,8,7];
 for(var j=1;j<arr.length-1;j++)
 for(var i=0; i<arr.length-j;i++){
     if (arr[i]>arr[i+1]){
          var box=arr[i];
          arr[i]=arr[i+1];
          arr[i+1]=box;

    }
 }
 document.write("<br/>"+arr);

 也可用下面的实现:
 var arr=[5,3,2,6,4,9,8,7];
 for(var j=arr.length-1;j>2;j--)
 for(var i=0; i<j;i++){
     if (arr[i]>arr[i+1]){
          var box=arr[i];
          arr[i]=arr[i+1];
          arr[i+1]=box;

    }
 }
 document.write("<br/>"+arr);


 数组常用方法:
 toString方法:任何对象都有toString方法,将任何对象转为字符串。一般不主动调用,js在需要时自动调用。是默认用逗号分隔每个元素。
 语法:x.toString()

 x.valueOf()方法:同toString()完全相同

 var str=arr.join("分隔符"):将数组转为字符串。可自定义分隔符。
 用法:将字符拼接为单词或句子。

 例:
 var chars=['H','e','l','l','o'];
 document.write("<br/>"+chars);    //H,e,l,l,o
 var str1=chars.join();
 var str2=chars.join('');
 document.write("<br/>"+str1);     //join()里面没有分隔符无法进行拼接
 document.write("<br/>"+str2);     //用空字符串分隔后连起来


 arr.concat(一个元素值,[数组]):括号里面可以是一个元素值,也可是一个数组,能将参数拆散成单个元素,追加到数组中,但是不会修改原数组,只能返回新数组对象,所以需要新建一个新的变量接着,即var newArr=arr.concat();

 例:
 var arr1=[1,2,3];
 var arr2=[12,23,123]
 var newArr=arr1.concat(arr2,31);   //将arr2拆散,和31拼接到arr1后面
 document.write("<br/>"+arr1); 
 document.write("<br/>"+newArr);

 字符串其实就是一串字符的数组。

 var subArr=arr.slice(start,end+1);截取数组下标从start开始,到end位置的元素,生成子数组对象。*含头不含尾*

 例:
 var arr=[1,2,3,12,23,123,78,90,99];
 var subArr=arr.slice(2,5);
 document.write("<br/>"+subArr);      //取数组中下标从2到下标为4的元素
 var subArr1=arr.slice(2,arr.length-2);  //从下标为2(也就是第三个元素)开始到倒数第3个元素
 document.write("<br/>"+subArr1);
 var subArr2=arr.slice(-4,-2+1);     //含头不含尾,所以后面有-2+1表示倒数第二个
 document.write("<br/>"+subArr2);  //从倒数第四个到倒数第二个

 arr.splice:删除、插入、替换数组元素,可以直接修改原数组。

 删除数组元素:可在任意位置删除任意个元素。
 语法:arr.splice(start,count)

 替换元素:arr.splice(start,count,值1,值2,...)
 插入元素:arr.splice(start,0,值1,值2,...)

 例:
 var arr=[1,2,3,12,23,123,78,90,99];
 var removed=arr.splice(2,2);
 document.write("<br/>"+arr);   //从下标为2开始删除两个元素
 document.write("<br/>"+removed);  //删除的元素组成的新数组
 arr.splice(2,2,16,6,22); 
 document.write("<br/>"+arr); //从下标为2开始删除两个元素,并新增三个元素

 arr.splice方法有返回值的,会返回每次删除的元素组成的新数组,可以接也可以不接。

 arr.reverse():颠倒所有数组元素,会改变原来的数组。
 arr.sort():排序,是一个默认升序排列,直接修改原数组。默认都转为字符串排序,是按字符串pk排列的,不是按数字大小。
【D3.js in Action 3 精译_012】1.2.5 与 D3 相关的 JavaScript 基础知识 本篇为《D3.js in Action》全新第三版第一章1.2.5小节内容,主要介绍了与 D3.js 相关的 JavaScript 基础知识,重点讲解了 JS 中的方法链式调用以及数组对象的常见接口方法,如 forEach、map、filter、find 等。 阅读详情

相关推荐

【CV论文精读】【协同感知综述】Collaborative Perception for Autonomous Driving :Current Status and Future Trend

感知是自动驾驶系统的关键模块之一,近年来取得了很大进展。然而,单个车辆的有限能力导致感知性能提高的瓶颈。为了突破个体感知的局限,协作感知被提出,它使车辆能够共享信息来感知视线和视野之外的环境。本文综述了有前途的协作感知技术的相关工作,包括介绍了基本概念,概括了协作模式,总结了协作感知的关键要素和应用。最后,我们讨论了这一研究领域面临的挑战和问题,并给出了一些潜在的进一步方向。

weixin_44184852的博客 4690

JavaScript的数组操作

JavaScript的数组操作1、JavaScript的`Array` 可以包含任意数据类型,并通过索引来访问每个元素。2、`Array` 可以通过索引把对应的元素修改为新的值,因此,对`Array` 的索引进行赋值会直接修改这个`Array`。3、JavaScript数组常用方法 1、JavaScript的Array 可以包含任意数据类型,并通过索引来访问每个元素。 要取得Array 的长度,直接访问length 属性: var arr = [1, 2, 3.14, 'Hello', null, true

XQC_KKK的博客 1105

Android/AutoMotive 多用户文件操作与权限管理

本文深入探讨了Android/Automotive多用户系统的文件操作与权限管理机制。文章阐述了多用户隔离与共享的核心原理,重点介绍了如何使用adb指令精准管理不同用户的应用与数据,并提供了在Android Automotive车载场景下实现安全跨用户数据共享与权限控制的最佳实践。

weixin_29214691的博客 162

2022-2023寒假字节青训营前端练习题(选择题)

2022-2023年寒假字节青训营选择题答案

weixin_43526403的博客 1338

C#:WPF格式转Winform格式

WPF格式转Winform格式

Hello C++ 1295

STM32 HAL库下DHT22高精度温湿度采集与30秒定时实现

单总线传感器(如DHT22)是嵌入式环境监测系统的核心数据源,其通信依赖微秒级精确时序控制。在STM32平台中,需结合硬件定时器(如TIM2)构建稳定周期触发机制,并通过GPIO+精确延时(非HAL_Delay)完成协议解析。该方案突破整数读取局限,完整还原带一位小数的温度与湿度值,显著提升工业级数据精度。典型应用于物联网终端、智能农业节点及边缘侧环境监控系统,为MQTT/CoAP等协议上报提供结构化原始数据支撑。本实践基于STM32F103与HAL库,不依赖第三方驱动,具备强可移植性与工程鲁棒性。

weixin_42453228的博客 513

JavaScript回顾00:入门

文章目录1.什么是javaScript?1.1 概述1.2 标准2.快速入门2.1 引入JavaScript2.2 基本语法入门2.3 数据类型 1.什么是javaScript? 1.1 概述 JavaScript是一门世界上最流行的脚本语言。 Java、JavaScript,10天产出 一个合格的后端人员必须精通JavaScript 1.2 标准 ECMAScript可以理解为JavaScript的一个标准。 最新版本已经到es6版本~ 但是大部分浏览器还只停留在支持es5代码上! 开发环境—线上环境,版

XXMRXXX的博客 640

数据库崩溃恢复机制:REDO日志与UNDO日志详解

在数据库管理系统中,事务的持久性和一致性是至关重要的。为了保证在系统崩溃或发生故障时数据不会丢失,数据库引入了恢复机制。其中,REDO日志和UNDO日志是两种关键的恢复技术。本文将详细描述这两种日志的作用、工作原理以及它们在数据库崩溃恢复中的应用。

My_wife_QBL的博客 1411

JavaScript——数组

数组 概念:数据的集合 1、数组创建 声明数组: 1.arr=new Array()//声明空数组 2.arr=new Array(8)//定义一个长度为8的数组 3.arr=new Array(1,12,3,5,6)//定义并赋值 4.arr=[];//字面量定义法 2.创建数组同时初始化 3.数组的属性: **arr.length** 1.获取数组的长度 var arr =[1,2...

qq_44916957的博客 555

CentOS 7 离线升级 OpenSSH 9.9p2 保姆级教程(含依赖包下载与常见报错解决)

本文提供了一份详尽的CentOS 7系统离线升级OpenSSH至9.9p2版本的完整教程。针对无外网环境,重点讲解了依赖包(尤其是OpenSSL 3.x)的离线下载与编译部署,并深入解决了编译过程中常见的“libcrypto.so缺失”等动态库链接错误。教程涵盖从环境准备、源码编译、服务配置到系统集成的全流程,最后还提供了关键的回滚方案与应急预案,是运维人员在内网环境中进行安全加固的实用指南。

weixin_29248313的博客 324

永磁同步电机矢量控制——电流内环前馈解耦策略

在采用永磁同步电机矢量控制时,ud和uq的指令值存在耦合项。需要对其进行解耦,目前,常用的解耦设计方法有前馈解耦、偏差解耦以及内模控制,本文主要分享电流内环前馈解耦控制策略。

a12312341ll的博客 8692

JavaScript学习笔记(一) 基本语法

## 基本语法JavaScript严格区分大小写每个语句以`;`结束,语句块用`{...}`,JavaScript不强制在语句末尾添加`;`,浏览器中负责执行JavaScript代码的引擎会自动在每个语句后面添加`;`,但是不添加;可能导致运行结果和期待结果不一致,所以建议都写上`;`。## 1 数据类型和变量### 1.1 NumberJavaScript不区分证书和浮点数,统一用Number表...

象牙塔下的渣渣 1265

基于Java+SpringBoot+微信小程序实现奶茶点单系统

再不用担心逢年过节的第一杯奶茶有没有人送了,制作一个奶茶点单系统自己当店主,开怀畅饮,一劳永逸。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

JS基础--es5基础知识

es5基础知识

gaofan_long的博客 202

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HTML5、CSS3和JavaScript的基础知识以及从入门到精通的学习路径

HTML5、CSS3和JavaScript是现代Web开发的核心技术,掌握它们对于想要从事Web开发的人来说至关重要。本文将介绍HTML5、CSS3和JavaScript的基础知识以及从入门到精通的学习路径。通过深入理解这三种技术的特性和用法,并结合实践项目,学习者可以逐步提升自己的前端开发能力。

努力是为了站在万人之中,成为别人的光 6264

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

5.Javascript(BOM,node.js基础知识和官方模块)

Javascript(BOM,node.js基础知识和官方模块,模块分类)

weixin_48623310的博客 489

JavaScript基础知识复习5

对象数据类型可以被理解成是一种数据集合。是 JavaScript 中内置的对象,称为数学对象,这个对象下即包含了属性,也包含了许多的方法。数学对象提供了比较多的方法,不要求强记,通过演示数学对象的使用,加深对对象的理解。数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是名词性的。数据行为性的信息称为方法,如跑步、唱歌等,一般是动词性的,其本质是函数。// 属性都是成对出现的,属性名 和 值,它们之间使用英文 : 分隔。// 属性都是成对出现的,属性名 和 值,它们之间使用英文 : 分隔。

2401_85837579的博客 1011

JS基础知识day5

js作用:操作 html + css ; 动态渲染数据; 数据类型:number / string / boolean / null / undefined 判断数据类型 typeof 转换 转字符串 String() + 转数字 Number() +/-/...

lxz1151184225的博客 815

HTML5学习笔记 —— JavaScript基础知识

HTML5学习笔记 —— JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScript(2) 作者同类文章X 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(

qq_39967882的博客 593

JavaScript基础知识1~5

1、<script> 标签 在 HTML 中,JavaScript 代码必须位于 <script> 与 </script> 标签之间。 实例 <script> document.getElementById("demo").innerHTML = "我的第一段 JavaScript"; </script> 注释:type 属性不是必需的。JavaScript 是 HTML 中的默认脚本语言。 JavaScript 函数和事件 JavaScript

qq_41995845的博客 453

js基础知识回顾5

字符串 字符串和数组类似,可以通过其索引位置来找到其值 charAt(index):找到索引值对应的字符 var str="abd rt 45 sgds"; for(var i=0;i<str.length;i++){ alert(str[i]); alert(str.charAt(i)); //一般使用此方法输出 } charCo...

qq_43412333的博客 153

JavaScript基础知识整理5

标准对象 在JavaScript的世界里,一切都是对象。 但是某些对象还是和其他对象不太一样。为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // 'number' typeof NaN; // 'number' typeof 'str'; // 'string' typeof true; // 'boolean' typeof ...

weixin_37328901的博客 125

JavaScript基础知识 (ECMAScript 5.0)

1 js的引入 2 js注释 3 js变量 4 js数据类型及转换 5 js运算符 6 js流程控制 7 函数 8 面向对象 9 模块(Math,Date,json) 10 正则表达式 1 js的引入 内接式 <script type="text/javascript"> </script> 外接式 &...

dtf1026536690的博客 405

JavaScript基础知识5(对象)

JavaScript基础知识5(对象)

qq_51752841的博客 796
上一篇: JavaScript基础知识(4)
下一篇: JavaScript基础知识(6)
敲代码的猫
博客等级 码龄10年 70粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值