【JAVA WEB】JavaScript--函数 作用域 对象

目录

函数

语法格式

示例

定义没有参数列表,也没有返回值的一个函数

定义一个有参数列表 ,有返回值的函数

关于参数个数 

函数表达式 

作用域 

作用域链

对象 

基本概念

创建对象

1.使用 字面量 创建对象

2.使用new Object()创建对象

3.使用构造函数创建对象

JavaScript 的对象和Java的对象区别

1.JavaScript 没有类的概念

2.JavaScript对象不区分“属性” 和“方法”

3.JavaScript对象没有public/private等访问控制机制

4.JavaScript对象没有“继承”(ES6之前)

class语句

继承 

 


函数

语法格式

//创建函数 / 函数声明 / 函数定义   与java的区别是不需要写返回值类型

function 函数名(形参列表){

        函数体

        return 返回值;

}

//函数调用

函数名(实参列表)                        //不考录返回值

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

示例

定义没有参数列表,也没有返回值的一个函数

<script>function hello(){console.log("hello")}hello();
</script>

效果:

定义一个有参数列表 ,有返回值的函数

<script>function hello(num,name){console.log(num+"hello"+name)return 1;}let a = hello(7,"lzb");
</script>

效果:

关于参数个数 

实参和形参之间的个数可以不匹配,但是实际开发一般要求形参和实参个数要匹配

  • 如果实参个数比形参个数多,则多出的参数不参与函数运算
  • 如果实参个数比形参个数少,则此时多出来的形参值为undefined

函数表达式 

 另一种函数的定义方式,与lamboda表达式类似

var add = function() {

        var sum = 0;

        for (let i = 0; i < arguments.length; i++) {

                sum += arguments[i];

        }

        return sum;

}

console.log(add(10,20));  //30

console.log(typeof add)    //function

此时形如 function(){ } 这样的写法定义了一个匿名函数,然后将这个匿名函数用一个变量来表示,这样就可以通过这个add 变量 来调用函数

作用域 

某个标识符名字在代码中的有效范围

在ES6标准之前,作用域主要分成两个

  • 全局作用域:在整个script,或者单独的 js 文件中生效
  • 局部作用域/函数作用域:在函数内部生效

PS:在JS中,如果定义一个变量不使用let吗,var此时这个变量就变成一个全局变量

作用域链

背景:

  • 函数可以定义在函数内部
  • 内层函数可以访问外层函数的局部变量

内部函数可以访问外部函数的变量,采取的是链式查找的方式,从内到外依次进行查找

let num = 10;

function test01() {

        let num = 100

        console.log(num) //100

        function test02() {

                //从上一层函数去找num

                console.log(num)  //100

        }

}

//如果test01里没有定义num,便从该函数所在的script找num,即第一行

let num = 10;

function test01() {

        //所在script找num变量

        console.log(num)  //10

        function test02() {

                //从上一层函数去找num

                console.log(num)  //10

        }

}

对象 

基本概念

对象是指具体的事务

举例:“电脑”不是对象,而是一个泛指的类别,而“我的联想笔记本” 就是一个对象

在JS中,字符串,数值,数组,函数都是对象

每个对象包含若干的属性和方法

  • 属性:事物的特征
  • 方法:事务的行为 

创建对象

1.使用 字面量 创建对象

  • 使用 { } 创建对象 
  • 属性和方法使用键值对的形式来组织
  • 键值对之间使用 ,分割。最后一个属性后面的 , 可有可无
  • 键和值之间使用:分割
  • 方法的值是一个匿名函数

//定义一个带属性、方法的对象

let student = {

        //属性

        name: "lzb",

        id:123,

        //方法,使用匿名函数来定义

        sayHello:function(){

                console.log("hello")

        }

}

//访问对象属性

console.log(student.name)

console.log(student[ ' id ' ])

//访问对象方法

student.sayHello()

2.使用new Object()创建对象

let student = new Object()

student.name = "小明"

student['id']=123

student.sayHello = function() {
        console.log("say hello")

}

3.使用构造函数创建对象

 function student(name,id,age)

{

        this.name = name

        this.id = id;

        this.age = age

        this.Say = function( ){

                console.log(name + "say hello")

}

//构造对象

let xiaoming=new People(“小明” ,123,100)

JavaScript 的对象和Java的对象区别

1.JavaScript 没有类的概念

对象其实就是  “属性”+“方法”

类相当于把一些具有共性的对象的属性和方法单独提取了出来,相当于一个 “模子”

在JavaScript中的“构造函数”也能起到类似的效果

2.JavaScript对象不区分“属性” 和“方法”

JavaScript函数和普通的变量一样,存储了函数的变量能够通过()来进行调用执行

3.JavaScript对象没有public/private等访问控制机制

对象中的属性都可以被外界随意访问

4.JavaScript对象没有“继承”(ES6之前)

继承的本质就是让“两个对象建立关联”,或者说是让一个对象能够重用另一个对象的属性和方法。

JavaScript中使用“原型”机制来实现类似的效果

class语句

在ES6之前没有class,ES6引入了class,使用class可以构造对象

class 类名{

        //构造方法

        constructor(name,id,age)

        {

                this.name=name

                this.id=id

                this.age=age

        }

        //class里面 方法不需要function

        Say(){

                console.log(this.name +"hello");

        }

        //static关键字 ,类名访问

        static other = "other"

}

let tmp=new 类名(参数)

继承 

class People{

        //构造方法

        constructor(name,id,age)

        {

                this.name=name

                this.id=id

                this.age=age

        }

        //class里面 方法不需要function

        Say(){

                console.log(this.name +"hello");

        }

        //static关键字 ,类名访问

        static other = "other"

}

class Student extends People{        

        constructor(name,id,age,clazz)

        {

               super(name,id,age)

                this.clazz=clazz

        }

}

let tmp=new Student(参数)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七、热身仪式(Warm-Up Rituals)

5.Warm Up Rituals 五、热身仪式 A warm up ritual is your per flight checklist you go through before you start focusing for a big session.It may be checking that you have water, that you don’t need to use the bathroom, that your phone is turned off or you’…

docker 3.1 镜像

docker 3.1 镜像命令 拉取镜像 docker pull debian #从 Docker Hub 拉取名为 debian 的镜像docker pull hello-world #从 Docker Hub 拉入名为 hello-world 的镜像‍ 运行镜像/容器 docker run hello-world ‍ 查看本地所有的镜像 docker images​​ 容器生成镜像…

STM32 cubemx配置DMA+空闲中断接收不定长数据

文章目录 前言一、串口空闲中断二、DMA空闲中断接收不定长数据实现思路三、STM32Cubemx配置DMA空闲中断接收不定长数据四、代码编写总结 前言 本篇文章给大家讲解一下DMA串口空闲中断接收串口不定长数据&#xff0c;之前我们也是讲解过串口接收不定长数据的&#xff0c;那么本…

2024.2.14

二维数组实现杨辉三角形 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {int n;scanf("%d",&n);int a[n][n];for(int i0;i<n;i){for(int j0;j<i;j){if(j0||ij){ a[i][j]1;}else{a[i][j]a[i-1][j]a[i-1][j-…

Netty应用(九) 之 编解码器概念 Netty常见的编解码器

目录 22.编解码器 22.1 编解码的概念 22.2 netty中的编解码 22.3 序列化 23.编解码器在使用过程中的两部分核心内容 23.1 序列化协议&#xff08;编码格式&#xff09;&#xff08;传输数据的格式&#xff09; 23.1.1 Java默认的序列化与反序列化 23.1.2 XML的序列化与反…

函数求导法则【高数笔记】

【分类】 1. 四则运算求导 2. 复合运算求导 3. 整体思想求导 #整体思想求导本质是运用复合运算求导&#xff0c;只不过是对复合运算求导的一种精炼 #无论是具体函数还是抽象函数求导&#xff0c;方法是一致的 【四则运算求导】 加&#xff0c;减&#xff0c;乘&#xff0c;除&a…

代码随想录算法训练营第四十九天(动态规划篇)| 474. 一和零, 完全背包理论基础

474. 一和零 题目链接&#xff1a;https://leetcode.cn/problems/ones-and-zeroes/submissions/501607337/ 思路 之前的背包问题中&#xff0c;我们对背包的限制是容量&#xff0c;即每个背包装的物品的重量和不超过给定容量&#xff0c;这道题的限制是0和1的个数&#xff0…

寒假 day13

1.请编程实现二维数组的杨慧三角 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) { int n,i,j;printf("please enter n:");scanf("%d",&n);int arr[n][n];for(i0;i<n;i){for(j0;j<i;j){if(j0 || ij…

【51单片机】LCD1602(江科大)

1.LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:162个字符,每个字符为5*7点阵 2.引脚及应用电路 3.内部结构框图 屏幕: 字模库:类似于数码管的数…

HTML 超文本标记语言

超文本标记语言 HTML 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。 页面制作的标准语言&#xff1a;HTML。 超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言&#xff0c;它消除了不同计算机之间信息交流的障碍&#xff0c…

“掌握温度,感知湿度,一触即知!”DHT11温湿度传感器,为您的生活增添一份关怀与精准。#非标协议【下】

“掌握温度&#xff0c;感知湿度&#xff0c;一触即知&#xff01;”DHT11温湿度传感器&#xff0c;为您的生活增添一份关怀与精准。#非标协议【下】 前言预备知识1.DHT11温湿度传感器初识1.1产品概述1.2与51单片机接线1.3数据传送逻辑和数据格式 2.发送时序检测DHT11温湿度传感…

2.14 指针练习

1、选择题 1.1、若有下面的变量定义&#xff0c;以下语句中合法的是&#xff08; A &#xff09;。 int i&#xff0c;a[10]&#xff0c;*p&#xff1b; A&#xff09; pa2; B&#xff09; pa[5]; C&#xff09; pa[2]2; D&#xff09; p&(i2); 解析&am…

数据库管理-第150期 Oracle Vector DB AI-02(20240212)

数据库管理150期 2024-02-12 数据库管理-第150期 Oracle Vector DB & AI-02&#xff08;20240212&#xff09;1 LLM2 LLM面临的挑战3 RAG4 向量数据库LLM总结 数据库管理-第150期 Oracle Vector DB & AI-02&#xff08;20240212&#xff09; 作者&#xff1a;胖头鱼的鱼…

备战蓝桥杯---动态规划(入门1)

先补充一下背包问题&#xff1a; 于是&#xff0c;我们把每一组当成一个物品&#xff0c;f[k][v]表示前k组花费v的最大值。 转移方程还是max(f[k-1][v],f[k-1][v-c[i]]w[i]) 伪代码&#xff08;注意循环顺序&#xff09;&#xff1a; for 所有组&#xff1a; for vmax.....0…

Wireshark不显示Thrift协议

使用Wireshark对thrift协议进行抓包&#xff0c;但是只显示了传输层的tcp协议&#xff1a; "右键" -> "Decode As" 选择thrift的tcp端口 将“当前”修改为Thrift&#xff0c;然后点击“确定” 设置后&#xff0c;可以发现Wireshark里面显示的协议从Tcp变…

基于Keras和LSTM单参数预测中兴通讯股票走势,结果震惊,含代码数据集

1.前言 昨天用分类算法预测大A各个股票的第二天行情&#xff0c;预测结果出现了千股下跌的场景&#xff0c;结果着实让我震惊&#xff0c;预测结果如下图&#xff0c;有没有可能预测第二天究竟涨了多少或者跌了多少呢&#xff1f;毕竟短线交易见好就收呢&#xff1f; 通过查找…

【教学类-47-01】20240206UIBOT+IDM下载儿童古诗+修改文件名

背景需求&#xff1a; 去年12月&#xff0c;我去了其他幼儿园参观&#xff0c;这是一个传统文化德育教育特色的学校&#xff0c;在“古典集市”展示活动中&#xff0c;小班中班大班孩子共同现场念诵《元日》《静夜思》包含了演唱版本和儿歌念诵版本。 我马上也要当班主任了&a…

C#中implicit和explicit

理解: 使用等号代替构造函数调用的效果以类似重载操作符的形式定义用于类型转换的函数前者类型转换时候直接写等号赋值语法,后者要额外加目标类型的强制转换stirng str -> object o -> int a 可以 int a (int)(str as object)转换通过编译,但没有转换逻辑所以运行会报错…

I.MX6U C语言运行环境构建及驱动开发格式

1.设置处理器模式 设置6ULL处于SVC模式下。设置下CPSR寄存器的bit4-0,也就是M[4:0]为100110x13.。读写状态寄存器需要用到MRS和MSR指令。MRS将CPSR寄存器数据读出到通用寄存器里面&#xff0c;MSR指令将通用寄存器的值写入到CPSR寄存器里面去。 2.设置SP指针 SP可以指向内部…

【数据结构】二叉树的顺序结构及链式结构

目录 1.树的概念及结构 1.1树的概念 1.2树的相关概念 ​编辑 1.3树的表示 1.4树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2.二叉树概念及结构 2.1二叉树的概念 2.2现实中的二叉树 ​编辑 2.3特殊的二叉树 2.4二叉树的性质 2.5二叉树的存储结…