JavaWeb-JavaScropt入门(二)

news2024/11/25 4:47:36

目录

  • 函数
    • 语法
    • 传参
    • 函数表达式
      • 作用域
  • 对象
    • 使用 字面量 创建对象 [常用]
    • 使用 new Object 创建对象
    • 使用 构造函数 创建对象

函数

语法

function 函数名(形参列表) {
    函数体
    return 返回值;
}

那么有了创建函数,肯定有调用函数:

// 函数调用
函数名(实参列表)           // 不考虑返回值
返回值 = 函数名(实参列表)   // 考虑返回值
	<script>
        function hello() {
            console.log('hello');
        }

        hello();
        hello();
        hello();
    </script>

在这里插入图片描述
先写调用再写定义也是可以的!

传参

JS中函数传入的参数可以是任意的,只要支持内部逻辑不论什么类型都是可以作为参数。

			function add(x, y) {
                return x + y;
            }

            let result = add(10, 20);
            console.log(result);

            result = add('hello', 'world');
            console.log(result);

            result = add('hello', '10');
            console.log(result);

在这里插入图片描述
正因为有这样的特性,JS天然就是不需要“泛型”/“重载”这样的语法的。

参数个数
一般写代码的时候,都需要调用时候传入的实参,个数和形参匹配
但是实际上,JS并没有在语法上做出这样的限制~
如果实参和形参个数不一样,也不是完全不可以的

// 最多可以支持 7 个参数的相加
            function add(a, b, c, d, e, f, g) {
                return a + b + c + d + e + f + g;
            }

            console.log(add(10, 20));
            console.log(add(10, 20, 30));
            console.log(add(10, 20, 30, 40));
            console.log('hello', 60, 70);

在这里插入图片描述

因为这里我们调用函数的时候只传了2个数字参数/3个数字参数,没被传参传到的形参就是undefined,返回结果就是一个NaN;如果把字符串写在前面就是一个拼接的效果,我们传了3个参数,最后两个形参是未定义的,所以就是undefined。

如果实参比形参多,多出来的实参,就相当于没了。

函数表达式

在JS里,函数是“一等公民”,函数就像一个普通的变量一样,可以被赋值给其他的变量,也可以作为另一个函数的参数,还可以作为另一个函数的返回值(函数和普通变量,并没有本质区别,但是函数这样的变量相比于普通变量多了个功能,可调用)

var add = function() {
 var sum = 0;
    for (var i = 0; i < arguments.length; i++) {
        sum += arguments[i];
   }
    return sum;
}
console.log(add(10, 20));            // 30

console.log(add(1, 2, 3, 4));        // 10

console.log(typeof add);             // function

在这里插入图片描述

作用域

某个标识符名字在代码中的有效范围.
在 ES6 标准之前, 作用域主要分成两个

全局作用域: 在整个 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);

在这里插入图片描述

对象

在 JS 中, 字符串, 数值, 数组, 函数都是对象.
每个对象中包含若干的属性和方法.
属性: 事物的特征.
方法: 事物的行为

使用 字面量 创建对象 [常用]

使用 { } 创建对象

var a = {};  // 创建了一个空的对象

var student = {
    name: '蔡徐坤',
    height: 175,
    weight: 170,
    sayHello: function() {
        console.log("hello");
   }
};
使用 { } 创建对象
属性和方法使用键值对的形式来组织. 
键值对之间使用 , 分割. 最后一个属性后面的 , 可有可无
键和值之间使用 : 分割. 
方法的值是一个匿名函数. 

使用对象的属性和方法:

// 1. 使用 . 成员访问运算符来访问属性 `.` 可以理解成 "的"
console.log(student.name);
// 2. 使用 [ ] 访问属性, 此时属性需要加上引号
console.log(student['height']);
// 3. 调用方法, 别忘记加上 () 
student.sayHello();

使用 new Object 创建对象

var student = new Object(); // 和创建数组类似
student.name = "蔡徐坤";
student.height = 175;
student['weight'] = 170;
student.sayHello = function () {
    console.log("hello");
}
console.log(student.name);
console.log(student['weight']);
student.sayHello();

注意, 使用 { } 创建的对象也可以随时使用 student.name = “蔡徐坤”; 这样的方式来新增属性.

使用 构造函数 创建对象

前面的创建对象方式只能创建一个对象. 而使用构造函数可以很方便 的创建 多个对象.
此时写起来就比较麻烦. 使用构造函数可以把相同的属性和方法的创建提取出来, 简化开发过程.所以这里我们就不介绍了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊一聊,我对DDD的关键理解

作者&#xff1a;闵大为 阿里业务平台解决方案团队 当我们在学习DDD的过程中&#xff0c;感觉学而不得的时候&#xff0c;可能会问&#xff1a;我们还要学么&#xff1f;这的确引人深思。本文基于工作经验&#xff0c;尝试谈谈对DDD的一些理解。 一、序 《阿甘正传》中&#xf…

亚马逊要求UL94防火测试阻燃测试标准及项目

UL94认证是什么&#xff1f;分几个等级?是如何表示各等级?带电的产品上架亚马逊都需要相关的UL报告&#xff0c;需要有ISO 17025资质的实验室出具的测试报告才能正常销售和恢复链接&#xff0c;UL94防火测试则是其中一项。UL94试验共有五种&#xff1a;1.B级的水平燃烧试验2.…

Nginx负载均衡

1、概念 访问量太大&#xff0c;一个 Tomcat 扛不住&#xff0c;所以就搭建 Tomcat 集群。让集群中的多个 Tomcat 服务器实例分担负载。 纵向扩容和横向扩容&#xff1a; 纵向扩容&#xff1a;给单台服务器提升硬件的配置。例如&#xff1a;提升 CPU、增加内存、扩大带宽、扩…

关于华为网络设备操作系统的介绍

1、什么是VRP VRP是华为公司数据通信产品的通用操作系统平台&#xff0c;作为华为公司从低端到核心的全系列路由器、以太网交换机、业务网关等产品的软件核心引擎。 功能&#xff1a;实现统一的用户界面和管理界面、实现控制平面功能&#xff0c;并定义转发平面接口规范、实现…

量子比特大突破!原子薄材料成为“救世主”

&#xff08;图片来源&#xff1a;网络&#xff09;量子计算是一项极其复杂的技术&#xff0c;现阶段的一些挑战正严重阻碍着它的发展&#xff0c;尤其是量子比特的小型化和质量问题。IBM计划在2023年实现具有1121个超导量子比特的处理器。以目前的技术手段&#xff0c;要达到这…

大数据框架之Hadoop:入门(二)从Hadoop框架讨论大数据生态

第2章 从Hadoop框架讨论大数据生态 2.1 Hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决&#xff0c;海量数据的存储和海量数据的分析计算问题。广义上来说&#xff0c;Hadoop通常是指一个更广泛的概念-Hadoop生态圈。 2.2 Hadoop发展历史 1&…

引入汇丰完成C+轮融资,镁信健康有何资本“魅力”?

近日&#xff0c;上海镁信健康科技股份有限公司&#xff08;下称“镁信健康”&#xff09;宣布完成C轮融资&#xff0c;引入汇丰集团作为战略投资者。镁信健康近两年是资本市场货真价实的“香饽饽”&#xff0c;2021年&#xff0c;完成B轮和C轮两轮融资&#xff0c;融资金额合计…

基于merlin使用chatGPT进行对话

最近chatGPT很热&#xff0c;大家都想试用它。但由于各种限制&#xff0c;一般情况下国内不能试用。 下面给大家介绍基于merlin使用chatGPT&#xff08;目前每天只有11次问答次数&#xff09;。 1 打开merlin页面 访问地址merlin.foyer.work&#xff0c;点击“add to chro…

深入Kafka核心设计与实践原理读书笔记第二章

1 生产者 生产逻辑 配置生产者客户端参数及创建相应的生产者实例。构建待发送的消息。发送消息关闭实列 参数说明 bootstrap.servers &#xff1a;用来指定生产者客户端链接Kafka集群搜需要的broker地址清单&#xff0c;具体格式 host1:port1,host2:port2,可以设置一个或多…

Sentinel-线程隔离和熔断降级

一、线程隔离 ​​​​ 总结 线程隔离的两种手段是&#xff1f; 信号量隔离线程池隔离信号量隔离的特点是&#xff1f; 基于计数器模式&#xff0c;简单&#xff0c;开销小线程池隔离的特点是&#xff1f; 基于线程池模式&#xff0c;有额外开销&#xff0c;但隔离控制更强 二…

为什么在容器中 1 号进程挂不上 arthas?

作者&#xff1a;卜比 本文是《容器中的 Java》系列文章之 4/n &#xff0c;欢迎关注后续连载 &#x1f603; 。 系列1&#xff1a;JVM 如何获取当前容器的资源限制&#xff1f; 系列2&#xff1a;Java Agent 踩坑之 appendToSystemClassLoaderSearch 问题 系列3&#xff1a;让…

FPGA纯verilog代码实现图像对数变换,提供工程源码和技术支持

目录1、图像对数变换理论2、log系数的matlab生成3、FPGA实现图像对数变换4、vivado与matlab联合仿真5、vivado工程介绍6、上板调试验证并演示7、福利&#xff1a;工程代码的获取1、图像对数变换理论 对数变换可以将图像的低灰度值部分扩展&#xff0c;显示出低灰度部分更多的细…

解决报错: ERR! code 128npm ERR! An unknown git error occurred

在github下载的项目运行时&#xff0c;进行npm install安装依赖时&#xff0c;出现如下错误&#xff1a;npm ERR! code 128npm ERR! An unknown git error occurrednpm ERR! command git --no-replace-objects ls-remote ssh://gitgithub.com/nhn/raphael.gitnpm ERR! gitgithu…

展锐UDX710:ProSLIC SI32185移植适配(未完待续)

一、SLIC基本流程图 在展锐UDX710平台上新增slic 驱动,可将应用代码置于source/unisoc/atrouter2.0下面,Si32185驱动代码放置于kernel,通过IOCTL对slic器件进行控制。整体流程如下图所示: 二、ProSLIC SI32185驱动调试 1. DTS 控制通路SPI0需增加一个spidev用于绑定对…

SpringCloud学习笔记03

目录 四十七、Hystrix是什么 四十八、Hystrix停更进维 四十九、Hystrix的服务降级熔断限流概念初讲 五十、Hystrix支付微服务构建 五十一、JMeter高并发压测后卡顿 五十二、订单微服务调用支付服务出现卡顿 五十三、降级容错解决的维度要求 五十四、Hystrix之服务降级支…

ReentrantReadWriteLock、StampedLock

ReentrantLock、ReentrantReadWriteLock、StampedLock 读写锁 一个资源可以被多个读线程访问&#xff0c;或者被一个写线程访问&#xff0c;但是不能同时存在读写线程。 小口诀&#xff1a;读写互斥&#xff0c;读读共享 锁的演变 无锁-----> 独占锁----->读写锁---…

为什么各个企业都在创建FAQ、常见问题页面?

常见问题解答页面是您可能已经为您的公司考虑过的东西&#xff0c;作为帮助客户回答有关您的产品和服务的常见问题的一种方式。但是您不知道最好的方法;肯定这只是一个问题清单吗&#xff1f;常见问题解答在整个购买过程中为客户提供支持&#xff0c;并减少客户需要与贵公司的联…

服务异步通信 RabbitMQ-高级篇

服务异步通信RabbitMQ-高级篇服务异步通信RabbitMQ-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallback1.2.消息持久化1.2.1.交换机持久化1.2.2.队列持久化1.2.3.消息持久化1.3.消费者消息确认1.3.1.演示none模式1.3.2.演示aut…

Spring Data JPA和MyBatisPlus比较以及SpringBoot整合

文章目录一.基本概念二.SpringBoot JPA整合hibernate -yml配置三.SpringBoot整合MyBatisPlus一.基本概念 Spring Data JPA作用:面向对象的ORM全自动化框架,简化持久化操作的开发工作:让开发者从繁琐的JDBC和SQL代码中解脱出来&#xff0c;直接面向对象持久化操作.特点:跨数据库…

Elasticsearch:在搜索中使用衰减函数(Gauss)

在我之前的文章 “Elasticsearch&#xff1a;使用 function_score 及 script_score 定制搜索结果的分数” 我有讲到 Decay 函数在搜索中的使用。在那里&#xff0c;我有一个例子讲述在规定的时间里&#xff0c;分数不进行衰减。同一的函数也可以适用于地理位置的搜索。位置搜索…