【JavaWeb】JavaScript基础语法(下)

news2024/9/20 12:37:32

✨哈喽,进来的小伙伴们,你们好耶!✨

🛰️🛰️系列专栏:【JavaWeb】

✈️✈️本篇内容:JavaScript基础语法(上)!

🚀🚀代码托管平台github:JavaWeb代码存放仓库!

⛵⛵作者简介:一名双非本科大三在读的科班Java编程小白,道阻且长,星夜启程!

哈喽,大家好,我是辰柒。上篇博客已经介绍了js的基础语法大部分内容了,本期呢,也是对上篇博客剩下一点内容的补充,内容不是很多,但也是满满干货,抓紧来学习啦!

目录

一、函数

传参类型如何规定?

 参数个数如何规定?

JS函数是"一等公民"!

作用域:

二、对象

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

 2. 使用 new Object 创建对象


一、函数

首先来看JS中创建函数的格式:

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

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

// 函数调用
函数名(实参列表)           // 不考虑返回值
返回值 = 函数名(实参列表)   // 考虑返回值

如何实现一个打印hello world并带返回值的函数并调用?

        function fun1(x){
            return "hello world";
        }
        let ret = fun1(1);
        console.log(ret);

运行结果:

 观察上述代码我们可以发现,函数的参数是不需要写参数类型的;函数也是没有返回值类型的;

函数调用和Java是一样的,定义一个参数ret来接收这个函数值。

传参类型如何规定?

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

        function fun2(x,y){
            return x+y;
        }
        let ret1 = fun2('hello',12);
        let ret2 = fun2('dodo',undefined);
        console.log(ret1);
        console.log(ret2);

运行结果:

 参数个数如何规定?

JS中调用函数的时候传入的参数个数和函数给的个数可以是不一致的!比如:

        function fun3(a,b,c,d,e){
            return a+b+c+d+e;
        }
        let ret3 = fun3(10,20);
        let ret4 = fun3(30,40,50);
        let ret5 = fun3("hello",60,70);
        console.log(ret3);
        console.log(ret4);
        console.log(ret5);

运行结果:

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

JS函数是"一等公民"!

在JS中,函数就像是一个普通的变量一样,可以被赋值给其他变量,也可以作为另一个函数的参数,也可以作为另一个函数的返回值。

函数赋值演示:

        function fun4(){
            console.log("hello JS");
        }
        let f = fun4;

注意fun4是一个函数名,fun4后面没有(),说明这不是函数调用,而是一个函数的赋值,这个f就是function类型的变量。

上述两个操作其实可以合并为一个操作:

        let f = function fun4(){
            console.log("hello JS");
        }

甚至可以出现以下的写法:

        let f = function(){
            console.log("hello JS");
        }

即没有名字的函数,也称为匿名函数,大家是否还记得lambda表达式呢?

这个操作即定义了一个没有名字的函数,并且把这个函数赋值给了f这个变量,后面就可以基于f来调用这个函数了。

作用域:

即某个标识符名字在代码中的有效范围
ES6 标准之前 , 作用域主要分成两个 全局作用域 : 在整个 script 标签中 , 或者单独的 js 文件中生效局部作用域 / 函数作用域 : 在函数内部生效。
那么在JS中,作用域是支持"逐级向上"查找到的。
比如:
        let num = 10;
        function fun1(){
            let num = 20;
            function fun2(){
                return num;
            }
            fun2();
        }
        fun1();

即当前是在 hello 这个函数里, 尝试打印 num.但是在 hello 中,没有 num 变量。于是就往上级找,找到了 hello2 这里。

如果在 hello2 里, 也没有num,于是继续往上找,找到了全局作用域,找到了 num(如果最后的全局作用域也没找到,就会报错)。

二、对象

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

JS中,对象是不依托于类的,在JS所有对象中,都是一个类型,Object!

创建方式:直接通过 {} 的方式就可以创建对象。

        let student = {
            name: "小黑",
            age: 18,
            num: 201,
            eat: function(){
                console.log("吃饭");
            },

            drink: function(){
                console.log("喝水");
            }
        };

注意每个属性和方法,都是通过键值对的形式来定义的,键和值之间通过: 来分割;键值对之间使用,来分割。

对象的使用:

        console.log(student.name);
        console.log(student.age);
        student.eat();

运行结果:

 2. 使用 new Object 创建对象

这种方式就简单记忆,对象点点点,创建属性和方法。

        var student = new Object(); // 和创建数组类似
        student.name = "大白";
        student.height = 170;
        student['weight'] = 150;
        student.sing = function () {
        console.log("hello JS");
        }
        console.log(student.name);
        console.log(student['weight']);
        student.sing();

运行结果:

 还有一种方式就是使用 构造函数 创建对象,写起来感觉很麻烦,不建议大家使用,这里也就不介绍了,最常用的还是第一种方式,大家要牢记!

OK,那么我们今天的内容就到这里啦,我们下期继续讲解JavaScript(WebAPI)的相关知识点!

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

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

相关文章

程序员的自我修养第七章——动态链接

继续更新《程序员的自我修养》这个系列,主要是夏天没把它看完,补上遗憾。本篇来自书中第七章。 再说动态链接前,我们先阐明为什么要动态链接: 动态链接的产生来自静态链接的局限性。随着静态链接的发展,其限制也越来越…

zookeeper可视化工具

参考资料: 参考网址 使用过程: 首先打开网址,将资源克隆下来解压压缩包 打开压缩目录下 startup.bat ,填入对应地ip即可(记得优先启动zookeeper,否则会报错)

我的1周年创作纪念日

机缘 我目前还是一名六年级小学生,下半年便升入初中了。 我是在2021年上半年(我四年级下期时)开始学习C的。后来我自己想做一些小游戏,便经常要在百度上搜索,后来就发现CSDN中的内容比较全面,便加入了CSD…

MacOS下在Pycharm中配置Pyqt5工具(2023年新版教程)

前提:使用Anaconda的包管理工具进行管理。创建environment,然后在该Environment上进行下载操作!!!一、安装相关模块安装pyqt5、pyqt5-tools两个基础包,命令如下:pip install -i https://pypi.tu…

CSS文本与字体(文本格式化/对齐/装饰/转换/间距/阴影/字体/样式/大小/简写属性)

目录 文本颜色 文本颜色和背景色 文本对齐 文本方向 垂直对齐 文字装饰 文本转换 文字缩进 字母间距 行高 字间距 空白 文本阴影 所有 CSS 文本属性 字体选择很重要 通用字体族 Serif 和 Sans-serif 字体之间的区别 一些字体的例子 CSS font-family 属性 字…

vue-countTo不兼容vue3解决方案

我们想要做一个数值增长的过度效果可以使用vue-count-to 官网的地址:https://www.npmjs.com/package/vue-count-to 官网的截图 vue2的使用方式 cnpm install -S vue-count-to在main.js import vueCountTo from "vue-count-to"; Vue.component("C…

【JavaEE】如何开始基础的Servlet编程(基于Tomcat服务器)

如何开始最简单的Servlet编程?(基于Tomcat服务器)知道了如何借助Tomcat开始进行最简单的Servlet编程后,我们就可以进一步完善功能制作一个基础的网站了。在此之前我们先了解一下Servlet的生命周期。Servlet的生命周期初始化init -…

C++ list

目录 一. 初步了解 1.构造、析构、赋值 2.容量 3.元素访问 4.增删 二. 模拟实现 框架 push_back 迭代器 带参构造、析构、赋值 增删 反向迭代器 所有代码 说白了,就是一个双向循环带头链表,由于我们在数据结构中已经学习过链表的知识&a…

macOS Big Sur 11.7.3 (20G1116) Boot ISO 原版可引导镜像

本站下载的 macOS Big Sur 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。 请访问原文链接:https://sysin.org/blog/macOS-Big-Sur-boot-iso/&a…

Nginx学习整理|入门记录

目录 1. Nginx概述 1.1 Nginx介绍 1.2 Nginx下载和安装 1.3 Nginx目录结构 2. Nginx命令 3. Nginx配置文件结构 4. Nginx具体应用 4.1 部署静态资源 4.2 反向代理 4.3 负载均衡 1. Nginx概述 1.1 Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件…

积分电路的并联电阻、反向放大电路的并联电容的区别?

运放反相比例放大电路中反馈电阻两端经常并联一个电容,而运放积分电路的反馈电容上常常并联一个电阻,两者电路结构相似,如下所示(隐去阻容值),二者有何区别呢?电阻、电容分别又起到什么作用&…

Catboost

CatBoost简介 CatBoost是俄罗斯搜索巨头Yandex在2017年开源的机器学习库,是Boosting算法的一种,CatBoost和XGBoost,Lightgbm并称为GBDT三大主流神器,都是在GBDT算法框架下的一种改进实现,XGBoost是被广泛应用于工业界…

使用jstack解决线程爆满问题

问题发现生产应用现存在问题,影响到系统的使用,前端页面只配置了35个派生指标,后台任务生成20000多线程任务,占用了全部资源,导致其他系统也没资源可用,指标工厂也无法进一步使用,今天上午发的死…

Email Signature Manager 9.3 Crack

概述 Email Signature Manager为所有用户创建和部署电子邮件签名 包括合并的联系方式、公司徽标、社交媒体图标 和链接,甚至个性化内容,如用户照片 创建和附加电子邮件活动,向所有人介绍奖项, 活动或促销,或设置运行的…

基于STM32的FreeRTOS开发(1)----FreeRTOS简介

为什么使用freertos FreeRTOS 是一个免费和开源的实时操作系统,它主要用于嵌入式系统。它非常轻量级,可以在很小的硬件资源上运行,因此非常适合在限制硬件资源的嵌入式系统中使用。 FreeRTOS提供了一组简单的任务管理功能,可以让…

基于Springboot vue前后端分离在线培训考试系统源码

# 云帆培训考试系统 管理账号:admin/admin 学员账号:person/person # 介绍 一款多角色在线培训考试系统,系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能,考…

C++:运算符重载与类的赋值运算符重载函数

目录 章节知识架构 一.运算符重载 1. 运算符重载的基本概念 代码段1 2.关于运算符重载的重要语法细则 二.运算符重载在类中的使用 三.类的默认成员函数:重载函数(赋值运算符重载) 1.自定义重载函数 代码段2 2.编译器默认生成的重载函数 四.前置(--)和后置…

Facebook小组与主页:哪个更适合SEO?

在 SEO中,对于优化人员来说有两种策略:一种是在 Facebook组上投放广告;另一种则是在主页上投放广告。那么,这两种策略哪种更好呢?对于 SEO来说又有什么影响呢?如果你已经在 Facebook上进行了一些优化工作&a…

Python---文件操作

专栏:python 个人主页:HaiFan. 专栏简介:本专栏主要更新一些python的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。 文件操作思维导图前言文件是什么文件路径文件操…

SpringBoot基础回顾:场景启动器

上一章我们回顾了 SpringBoot 的自动装配,以及承载自动装配的核心——自动配置类。自动配置类的定义位置通常在每个场景的 jar 包中,配置 spring.factories 文件中 EnableAutoConfiguration 的位置通常在相应的 autoconfigure jar 包下。本章会着重回顾和…