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

【JavaWeb】JavaScript基础语法(下)

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

🛰️🛰️系列专栏:【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)的相关知识点!

相关文章:

  • SQL--DDL
  • E2PROM 蓝桥杯 stm32 AT24C02读写函数
  • 前后端登录逻辑讲解-本文使用RSA加密过程-附代码
  • 【操作系统】—— Windows常用快捷键(带你快速了解)
  • client-go实战之九:手写一个kubernetes的controller
  • 使用ebpf 监控mysqld 内核
  • 密码学系列之十:量子密码
  • 【vue2】对路由的理解
  • SOLID原则总结
  • MySQL内外连接
  • Java基础 Stream流方法引用异常文件
  • 【C++】右值引用和移动语义 | 新的类功能 | 可变参数模板
  • Ubiquiti MAC Address Changer 3.0 Crack
  • Kubernetes:基于命令行终端UI的管理工具 K9s
  • 我的2022
  • [译]CSS 居中(Center)方法大合集
  • iOS | NSProxy
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • java小心机(3)| 浅析finalize()
  • Linux中的硬链接与软链接
  • log4j2输出到kafka
  • nginx 配置多 域名 + 多 https
  • Webpack 4x 之路 ( 四 )
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 手机端车牌号码键盘的vue组件
  • 为视图添加丝滑的水波纹
  • 一文看透浏览器架构
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • FaaS 的简单实践
  • hi-nginx-1.3.4编译安装
  • 阿里云API、SDK和CLI应用实践方案
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • "无招胜有招"nbsp;史上最全的互…
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #数学建模# 线性规划问题的Matlab求解
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (4)STL算法之比较
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (poj1.3.2)1791(构造法模拟)
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (一)Dubbo快速入门、介绍、使用
  • (转)EOS中账户、钱包和密钥的关系
  • (转)ORM
  • (转)项目管理杂谈-我所期望的新人
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core 和 .NET Framework 中的 MEF2