当前位置: 首页 > news >正文

JavaScript新手学习手册-基础代码(二)

与上篇博客相接

一:函数:

案例:通过函数实现绝对值的输出

方法一:

        function absoluate(x){if(x>0){return x;}else{ return -x;}}

在控制台调用函数

 方法二:

       var demo1 =  function(x){if(x>0){return x;}else{ return -x;}}

控制台调用:

遇到前端的输入一个空值,该怎么解决?

function absoluate(x){if(typeof x!='number'){    //typeofp得到一个数据是什么类型throw "not a number"  //如果不是number类型,会主动抛出} if(x>0){return x;}else{ return -x;}}

控制台:

二:argument:

argument是JavaScript中的一个关键字,用于指向调用者传入的所有参数。

因为前端向后端传入数据,并非一定按照开发者的格式进行值的传入,如果传入很多的值,我们需要一个工具,可以帮我们存储前端所传来的数据。argument就是发挥这样的作用,它是一个数据组,可以帮我们将前端的数据,按照元素的方式传入到argument中的数组中。

    function number(x) {//因为在前端传来的数据不一定与创造者所设计的程序相同,arguments是js自身所带的关键字,它是一个数组,存放着函数中的所有数据console.log("x>>"+x);   //x为argument数组的第一个元素for (let m=0;m<arguments.length;m++){    //将前端所传入的数据进行输出console.log(arguments[m])}

控制台:

 这里的argument数组存放着前端传入数据的全部,有时候我们并不需要这么的元素,需要调用元素之外的元素,这时候我们可以通过...rest来实现。

    // ...rest这种方法可以将不需要的数据,摘除去然后放在一个数组中//注意...rest三个点不能省略function data(z,y,...rest) {    //需要前两个数,另外的放在rest数组中console.log("z>>>"+z);    console.log("y>>>"+y);console.log(rest)}

三:变量的作用域:

双重函数:函数内部可以调用外部的参数,但是外部不可以调用内部的数

注意:函数寻找变量,会先从内部函数中寻找,如果外部也有此数据,将会被忽略

        'use strict';function demo1() {var x = 1;function demo3(){    /*双重函数:函数内部可以调用外部的参数,但是外部不可以调用内部的数注意:函数寻找变量,会先从内部函数中寻找,如果外部也有此数据,将会被忽略*/var y = 2;y = x + y;console.log(y);}var z = y+1;console.log(z);demo3();}

 结论:双重函数中:内部函数可以访问外部函数的成员,反之则不行

调用demo1方法:看输出结果  y值没有被定义

 当两个函数,定义一个相同的变量会不会有影响?

        'use strict';function demo1() {var x = 1;console.log(x);}// x =x + 1;  //在函数内部定义的参数,在函数外不能被调用,使用不会报错,但是在网页中则会出错function demo2() {var x = 2;   //在两个函数内部定义相同变量,但是在两个函数内部,则不会产生冲突console.log(x);}

结论:定义两个相同的变量,但在两个函数函数中,两者并不会互相影响。

当遇见双重函数(函数嵌套一个函数)时,在两个函数中定义相同的变量,如何判断变量的使用方法?

        function demo1(){var x = 'a';function demo2() {console.log(x);}demo2();}

结论: 内部函数并没有定义的变量x,但是在外层函数中定义一个变量x,如果在内部调用x变量,控制台输出的则是外层变量的数据x。

当遇见双层函数时,寻找变量时它会先从内层函数中开始,如果内部并没有定义,那么他将会转到外层函数中寻找变量。

四:全局变量:

window:是一个全局对象,默认所有的全局变量都会在此对象下

        var x = 1;  //定义一个全局变量,可以在任何地方被调用function demo4() {console.log(x);window.console.log(x);  //==console.log(x)alert(x);  //alert()方法 实际上也是一个全局变量,也可以这样写window.alert(x);}console.log(x);demo4();

控制台

实现将alter()功能定义给一个新的方法

        var a = "xxx";window.alert(x);var oldalert = window.alert;  //将alter方法定义以新的方法oldalert(123);window.alert = function() {}

弹窗一:

弹窗二:

我们把alter的功能转给一个新的变量,那么alter()还能使用吗?

输出为未定义,说明alter()方法失效了

将alter()功能恢复过来,将原本定义的内容重新定义给alter()即可

        //恢复alert功能window.alert = oldalert;window.alert(456)

注意:这里出现一个问题window是一个对象,它的下面存放着所有的变量,但在项目中如果我们遇到相同的变量名会怎么进行解决呢?

var ma = {};  //定义一个数组,将他定义为放置全局变量的一个空间ma.name ='myc';console.log(ma.name)

解决方案:就是自己定义一个全局变量组,让他代替window的存在,把自己定义的变量,全都存在此,减少相同名字的冲突。

五:let关键字

在JavaScript中作用域由两种,一种是全局作用域,一种是私有作用域。在日常的开发过程种,不能将变量全都定义成全局变量,这样会大大的增加了的占用内存。而在ES6新版本种let关键字的出现则是可以解决这个问题。

它的作用域仅限在私有的作用域里也就是☞{}这一个大括号里这个块级作用域里。极大的降低了内存的占用。

定义全局变量:

        function demo1 (){for(var i=0;i<10;i++){}console.log(i);   //看看变量是否被调用}

定义的变量出了循环体内依然能被调用。

当使用变量为let关键字时:

        function demo2 (){for(let i=0;i<10;i++){}console.log(i);}

 j报错并没有找到变量i,说明由let关键字只能存活在当前这个块级作用域里。

六:const关键字

特性:必须要为常量定义一个初始值,这个初始值在后面的开发过程中,不能被更改,这就和java中final关键字一样的使用方法。

注意:const定义的数据类型成为常量,不能更改,也不能将已存在的变量值赋值给它。可以把它理解为权限是只读。

        const c  = 300;   //c为的权限只可读console.log(c)c = 200;console.log(c);

控制台输出的数据为300,说明赋值,并没有成功对他进行赋值。是一个常量。

七:方法

什么是方法?

方法 = 对象{ 函数}:方法就是函数在对象里面,通过对象来调用对应的方法

对象中是方法和属性

定义一个方法(以获取年龄为例)

 var mmm = {name:'ma',id:12,birth:2001,age:function () {       //JavaScript中函数的使用方法var now  = new Date().getFullYear();   //获取现在的年份return now - this.birth;    //this的方法与java中this使用方法相同}}

控制台:获取本人出生的年龄 

 上面是将方法设置在函数内部,如果我们把两者分开来说呢?

        function demo1() {var now  = new Date().getFullYear();   //获取现在的年份return now -this.birt;   //当把前面的代码拆开,分开两部分,this是不具有指向功能}var aaa={name:'ma',id:12,birt:2001,ag:demo1}

也可以成功得到输出,因为this关键字起到了关键的作用,this是指向使用它的人 aaa.ag()这个方法没毛病,因为this指向就是aaa ag(); 直接调用这个方法,则不可以,因为直接调用,它指向的是window这个对象,但这个对象却没有birt这个属性。这时候又一个关键字的出现可以解决这种局面的出现。那就是apply.

八:apply

        function demo1() {var now  = new Date().getFullYear();   //获取现在的年份return now -this.birt;   //当把前面的代码拆开,分开两部分,this是不具有指向功能}var aaa={name:'ma',id:12,birt:2001,ag1:demo1}var bbb={name:'cai',id:13,birt:2012,ag2:demo1}

demo1.apply(aaa,[]);   //实现的作用就是将demo1中的this指向了aaa对象
demo1.apply(bbb,[]);    //实现的作用就是将demo1中的this指向了bbb对象


 

相关文章:

JavaScript新手学习手册-基础代码(二)

与上篇博客相接 一&#xff1a;函数&#xff1a; 案例&#xff1a;通过函数实现绝对值的输出 方法一&#xff1a; function absoluate(x){if(x>0){return x;}else{ return -x;}} 在控制台调用函数 方法二&#xff1a; var demo1 function(x){if(x>0){return x;}els…...

wireshark 抓包使用记录

文章目录前言wireshark 抓包使用记录一、wireshark的基础使用二、wireshark的常用功能1、开始混杂模式2、过滤器操作2.1、抓包过滤器2.2、显示过滤器3、时间格式显示4、统计流量图5、标记显示6、导出数据包7、增加、隐藏、删除显示列前言 如果您觉得有用的话&#xff0c;记得给…...

pd dataframe 读取处理 有合并单元格的excel方式

from pathlib import Path import openpyxl 拆分所有的合并单元格&#xff0c;并赋予合并之前的值。 由于openpyxl并没有提供拆分并填充的方法&#xff0c;所以使用该方法进行完成 def unmerge_and_fill_cells(worksheet): all_merged_cell_ranges list( worksheet.merged_…...

七,iperf3源代码分析:状态机及状态转换过程--->运行正向TCP单向测试时的服务端代码

本文目录一、测试用命令二、iperf3状态机中各个状态解析三、iperf3状态机迁移分析K-初始化测试对象&#xff08;NA--->初始化状态&#xff09;:A-服务器端测试对象开始运行&#xff08;初始化状态--->IPERF_START状态&#xff09;:B-建立控制连接&#xff08;初始化状态-…...

【网络篇】----- 传输层协议 之 UDP(协议格式,协议特性和编程影响三方面详细分析)

文章目录 前言1、UDP协议2、协议格式 2.1、协议格式模型2.2、字段分析3.协议特性4.编程影响总结前言 1、UDP协议 UDP协议&#xff0c;又名数据报传输协议&#xff0c;是传输层协议之一&#xff01;&#xff01;&#xff01; 在TCP/IP五层模型中&#xff0c;在传输层中&#xff…...

【基于STM32的多功能台灯控制】

基于STM32的多功能台灯控制 在之前一篇博文中已出过智能台灯相关的介绍&#xff0c;在这里对之前的模块以及功能上进行了优化和功能上的改进&#xff0c;需源码或实物可私【创作不易-拒绝白嫖】 功能说明 1、按键模式多功能台灯在设计上使用了4个按键分别做为 按键1模式的切换…...

Mac 编译x264源码No working C compiler found 错误

在mac上编译x264源码时&#xff0c;报错No working C compiler found 。网上找了一圈方案也无法解决 只能硬着头皮看configure这个脚本&#xff0c;通过一步一步抽丝拨茧终于是在mac上可以编译了。 这里只当记录一下&#xff0c;为后续同学遇到同样问题提供一个辅助解决方案。…...

如何有效地降低软件开发风险?

1、科学分析风险 高风险自动预警 一般对风险进行科学分析&#xff0c;主要从3个维度进行划分&#xff1a;影响的严重性、发生的可能性、产生的影响性。 根据风险对项目的影响程度&#xff0c;从3个维度将其划分5个等级&#xff1a;很低、比较低、中等、比较高、很高。这样我们能…...

【python】剑指offer代码大集合2

本文是【python】剑指offer代码大集合的姊妹篇,用于完善标识todo的代码! 刷题网站:https://leetcode.cn/problem-list/xb9nqhhg/ 剑指 Offer 14- I. 剪绳子 https://leetcode.cn/problems/jian-sheng-zi-lcof/ todo 剑指 Offer 14- II. 剪绳子 II https://leetcode.cn/pr…...

经纬恒润再传佳讯,斩获大奖

阳春二月&#xff0c;经纬恒润屡传佳讯&#xff0c;凭借产品、研发等多方面的出色表现&#xff0c;再次斩获东风柳汽“优秀供应商”和广汽传祺“科技创新奖”&#xff0c;以实力印证良好口碑&#xff0c;不忘初心&#xff0c;载誉而行&#xff01; 东风柳汽&#xff1a;优秀供…...

说说转义字符 “\”

转义字符-escape character character 表示字符&#xff0c;包含两层含义&#xff0c; 1.字母 2.符号 转义&#xff1a; 改变含义 字符&#xff1a; 字母、符号 转义字符&#xff1a; 把 字母、符号 的含义改变了注意&#xff1a;这里有 2 个常常被忽视、忽略、轻视的转义规则&…...

2023高质量设计竞赛汇总,想证明自己实力的快来

对于设计师来说&#xff0c;参加设计比赛不仅能够提升自己的设计能力&#xff0c;也是一条证明实力最好的捷径。小编也收集整理了不少近期设计大赛&#xff0c;分别标注了截止日期和官网等&#xff0c;宝子们记得码住收藏&#xff0c;赶紧SHOW起来&#xff01;优酷X站酷 一千零…...

MongoDB与MySQL有区别吗?用一个表格跟你说明

MongoDB MySQL 数据库模型 非关系型 关系型 存储方式 虚拟内存持久化 不同引擎有不同存储方式 查询语句 独特MongoDB查询方式 传统SQL语句 架构特点 可通过副本集和分片实现高可用 常见有单点、M-S、MHA、MMM、Cluster等架构方式 数据处理方式 基于内存&#xf…...

ElasticSearch - 分布式文档索引、搜索、更新和删除文档的过程

文章目录1. 分布式文档存储1. 路由一个文档到一个分片中2. 主分片和副本分片如何交互3. 新建、索引和删除文档4. 取回一个文档5. 局部更新文档2. ElasticSearch相关问题1. 路由计算方式&#xff1f;2. 分片控制3. 分布式文档写入(索引)的过程&#xff1f;4. 分布式文档搜索的过…...

Python之re库用法细讲

文章目录前言一、使用 re 模块的前期准备工作二、使用 re 模块匹配字符串1. 使用 match() 方法进行匹配2. 使用 search() 方法进行匹配3. 使用 findall() 方法进行匹配三、使用 re 模块替换字符串四、使用 re 模块分割字符串总结前言 在之前的博客中我们学习了【正则表达式】的…...

MATLAB | 如何绘制github同款日历热力图

应粉丝要求&#xff0c;出一个类似于github热图的日历热力图&#xff0c;大概长这样&#xff1a; 依旧工具函数放在文末&#xff0c;如有bug请反馈并去gitee下载更新版。 使用教程 使用方式有以下几种会慢慢讲到&#xff1a; heatmapDT(Year,T,V)heatmapDT(Year,T,V,MonLim)h…...

认识适配器模式

适配器模式 一、定义 在不修改原来代码的情况下&#xff0c;适配器模式使接口不兼容的那些类可以一起工作。 二、适配器结构 1、Target&#xff08;目标抽象类&#xff09;&#xff1a;目标抽象类定义客户所需的接口&#xff0c;可以是一个抽象类或者接口&#xff0c;也可以…...

JavaSe第6次笔记

1.不建议使用c语言的数组的表示方法。 2.二维数组表示方法 3.数组整体初始化时&#xff0c;只能在定义时初始化。 int[] array; array new int[]{1, 2}; 4. boolean类型数组&#xff0c;默认值是false&#xff0c;String类型数组&#xff0c;默认是null&#xff0c;其它是…...

单例设计模式

介绍 单例模式是一种创建型设计模式,其主要特点包括: 只有一个实例:单例模式确保系统中只有一个实例对象存在,所有对该对象的访问都是对同一个对象的引用全局访问:单例模式可以全局访问该实例对象,避免了多个对象之间的冲突和竞争延迟初始化:单例模式通常使用延迟初始化技术,…...

第七章 opengl之光照(基础光照)

OpenGL基础光照环境光照漫反射光照镜面光照基础光照 主要需要理解一个模型是冯氏光照模型&#xff0c;主要结构由3个分量组成&#xff1a;环境&#xff0c;漫反射&#xff0c;镜面光照。下面分别描述下这三个光照&#xff1a; 环境光照(Ambient Lighting)&#xff1a;即使在黑…...

Arm嵌入式编译器C/C++库架构与优化实践

1. Arm嵌入式编译器C/C库架构解析 1.1 运行时库体系结构 Arm Compiler for Embedded提供完整的C/C标准库实现&#xff0c;其架构设计遵循分层原则&#xff1a; 基础层 &#xff1a;ISO C99标准库&#xff08;libc&#xff09;提供字符串处理、内存管理、数学运算等基础功能 …...

神经科学启发的边缘AI持续学习:从突触修剪到双记忆系统的架构设计

1. 项目概述&#xff1a;为什么我们需要一个“会学习”的边缘大脑&#xff1f;想象一下&#xff0c;你家里的扫地机器人&#xff0c;第一天它学会了绕过餐桌腿&#xff0c;第二天你搬来一把新椅子&#xff0c;它却一头撞了上去&#xff0c;然后彻底忘记了怎么绕过餐桌腿。这听起…...

RedwoodJS执行器:命令执行与进程管理的终极指南

RedwoodJS执行器&#xff1a;命令执行与进程管理的终极指南 【免费下载链接】redwood RedwoodGraphQL 项目地址: https://gitcode.com/gh_mirrors/re/redwood RedwoodJS是一个功能强大的全栈JavaScript框架&#xff0c;它提供了一套完整的工具链来简化现代web应用的开发…...

如何快速上手Podgrab:5分钟搭建个人播客下载中心完整指南

如何快速上手Podgrab&#xff1a;5分钟搭建个人播客下载中心完整指南 【免费下载链接】podgrab A self-hosted podcast manager/downloader/archiver tool to download podcast episodes as soon as they become live with an integrated player. 项目地址: https://gitcode.…...

AI Agent思维文件版本控制:mindkeeper工具的设计原理与实战指南

1. 项目概述&#xff1a;为AI的“大脑”打造时光机如果你正在使用像OpenClaw这样的AI助手框架&#xff0c;或者任何基于Markdown文件来定义AI行为、记忆和技能的项目&#xff0c;那么你一定经历过这样的时刻&#xff1a;为了优化AI的回复风格&#xff0c;你反复调整了SOUL.md里…...

FPGA/CPLD数字系统设计实战:从器件选型到调试验证的工程指南

1. 从一则行业趣闻聊起&#xff1a;FPGA厂商的“江湖地位”与我们的设计选择前几天翻看一些老旧的行业资料&#xff0c;偶然间又看到了这篇2012年来自EE Times的“陈年旧文”。文章作者Clive Maxfield用他标志性的幽默笔调&#xff0c;聊了一个看似无厘头的话题&#xff1a;将科…...

NVIDIA aicr:AI容器运行时核心原理与生产部署指南

1. 项目概述&#xff1a;当AI遇见容器运行时如果你在AI开发或者高性能计算领域摸爬滚打过一段时间&#xff0c;大概率会遇到一个让人头疼的问题&#xff1a;如何高效、稳定地管理那些“胃口”巨大、依赖复杂的AI工作负载&#xff1f;从训练一个大型语言模型到运行一个实时的计算…...

2026年AI模型API中转站大排名!解析各平台优势,为企业与开发者精准选型

2026年5月&#xff0c;在中国广州&#xff0c;随着AI大模型技术不断迭代并在各产业全面落地&#xff0c;企业级API中转服务市场已步入成熟竞争阶段。技术稳定性、场景适配度以及综合性价比成为企业选择API中转站时的核心考量因素。近日&#xff0c;行业第三方评测机构发布了《2…...

ElevenLabs Enterprise方案深度拆解:从API限流策略到GDPR语音数据主权管理的7层安全加固实践

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs Enterprise方案全景概览 ElevenLabs Enterprise 是面向中大型组织构建的语音合成与语音识别一体化平台&#xff0c;专为高并发、多租户、合规性敏感场景设计。其核心能力覆盖实时TTS流式输出…...

JEB Pro 5.40 (macOS, Linux, Windows) - Android 反编译器和调试器

JEB Pro 5.40 (macOS, Linux, Windows) - 逆向工程平台 Reverse Engineering for Professionals. 请访问原文链接&#xff1a;https://sysin.org/blog/jeb/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org JEB Decompiler JEB 是逆向工程…...