【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.mzph.cn/news/682060.shtml

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

相关文章

【教程】MySQL数据库学习笔记(二)——数据类型(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 文章目录 【MySQL数据库学习】系列文章一、整…

Ps:创建联系表

Ps菜单&#xff1a;文件/自动/联系表 II Automate/Contact sheet II Photoshop 的“联系表 II” Contact Sheet II命令为快速生成图像集合的预览和打印目录提供了一种高效的方法。 此命令可以通过自动化过程读取指定的图像文件&#xff0c;然后根据用户定义的参数&#xff08;如…

初识webpack(二)解析resolve、插件plugins、dev-server

目录 (一)webpack的解析(resolve) 1.resovle.alias 2.resolve.extensions 3.resolve.mainFiles (二) plugin插件 1.CleanWebpackPlugin 2.HtmlWebpackPlugin 3.DefinePlugin (三)webpack-dev-server 1.开启本地服务器 2.HMR模块热替换 3.devServer的更多配置项 (…

很在意别人的看法,怎么办?

如果把我们每天的幸福和烦恼列出来&#xff0c;你也许会发现一件有趣的事情&#xff1a; 带给我们幸福感的&#xff0c;往往是别人的感谢、鼓励和肯定。它们会带给你许多动力&#xff0c;让你一整天都充满激情。 反过来&#xff0c;带给我们烦恼的&#xff0c;大多数来源于什么…

vscode运行Live Server报错:Windows找不到文件Microsoft Edge

问题场景&#xff1a; 在写好的html文件空白处右键单击Open with Live Server后弹出下面提示框报错Windows找不到文件Microsoft Edge有的电脑报错是Windows找不到文件chrome 问题解决方案&#xff1a; 应该是由于你电脑上的默认浏览器Chrome的安装路径变了&#xff0c;更新C…

【Linux】进程信号概念 | 核心转储 | 信号的产生

文章目录 一、信号入门1.1 生活中的信号1.2 进程角度的信号1.3 信号的概念1.4 信号的三种常见处理方式 二、信号的产生2.1 通过终端按键产生信号问题1&#xff1a;OS怎么知道键盘输入了ControlC &#xff1f;问题2&#xff1a;按CtrlC终止进程和按Ctrl\终止进程&#xff0c;有什…

mysql表设计

表设计流程&#xff1a; &#xff08;1&#xff09;分库&#xff1a;根据模块分 &#xff08;2&#xff09;分表&#xff1a;根据流程分表 &#xff08;3&#xff09;冗余字段和视图设计 21个表设计准则 &#xff08;1&#xff09;命名规范 account_no,account_number 表名用t…

【闲谈】开源软件的崛起与影响

随着信息技术的快速发展&#xff0c;开源软件已经成为软件开发的趋势&#xff0c;并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点&#xff0c;使得越来越多的企业和个人选择使用开源软件&#xff0c;促进了软件行业的繁荣。然而&#xff0c;在使用开源软件的过…

软考 系统分析师系列知识点之信息系统战略规划方法(10)

接前一篇文章&#xff1a;软考 系统分析师系列知识点之信息系统战略规划方法&#xff08;9&#xff09; 所属章节&#xff1a; 第7章. 企业信息化战略与实施 第4节. 信息系统战略规划方法 7.4.6 战略栅格法 战略栅格&#xff08;Strategic Grid&#xff0c;SG&#xff09;法是…

基于CU,PO,RD,IPO矩阵图分析数据资产-自创

术语 数据资产&#xff1a;数据资产是具有价值的数据资源。没有价值的数据资源&#xff0c;通过采集&#xff0c;整理&#xff0c;汇总等加工后&#xff0c;也可以成为具有直接或间接价值的数据资产。传统企业逐渐数字化转型&#xff0c;尤其是互联网企业&#xff0c;都十分重视…

C#中implicit和explicit

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

《区块链公链数据分析简易速速上手小册》第3章:区块链数据结构(2024 最新版)

文章目录 3.1 区块和交易的结构3.1.1 基础知识3.1.2 重点案例&#xff1a;构建简单的区块链3.1.3 拓展案例 1&#xff1a;验证交易签名生成密钥对签名交易验证签名完整的交易签名与验证演示 3.1.4 拓展案例 2&#xff1a;监听和解析区块链事件代币合约示例&#xff08;Solidity…

Android adb使用超级大全

Android adb使用超级大全 ADB&#xff0c;即Android Debug Bridge&#xff0c;是一款强大的工具&#xff0c;对于Android开发/测试人员来说是不可或缺的&#xff0c;同时也是Android设备玩家的好玩具。本文将详细介绍ADB的使用方法。 ADB的基本用法如下&#xff1a; 命令语法…

Pb协议的接口测试

Protocol Buffers 是谷歌开源的序列化与反序列化框架。它与语言无关、平台无关、具有可扩展的机制。用于序列化结构化数据&#xff0c;此工具对标 XML &#xff0c;支持自动编码&#xff0c;解码。比 XML 性能好&#xff0c;且数据易于解析。更多有关工具的介绍可参考官网。 P…

Django form组件 - 神奇的后端直接渲染HTML

前言 之前在HTML页面中利用form表单向后端提交数据时会写一些获取用户输入的标签并且使用form标签将其包裹起来。并且很多场景下都需要对用户的输入做校验&#xff0c;比如用户输入的长度和格式等&#xff0c;如果用户输入的有误就需要在页面上相应的位置显示相应的错误信息。…

RBF神经网络中的RBF的英文全称是什么,是用来干什么的?

问题描述&#xff1a;RBF神经网络中的RBF的英文全称是什么&#xff0c;是用来干什么的&#xff1f; 问题解答&#xff1a; RBF神经网络中的RBF是径向基函数&#xff08;Radial Basis Function&#xff09;的缩写。径向基函数是一种在机器学习和模式识别中常用的函数类型&…

数据库从入门到精通(一)数据库基础操作

mysql数据库基础操作 cmd下启动mysql数据库操作命令数据库重要的删除操作数据库增删改查操作插入数据更新数据删除数据查询数据查询指定记录in查询满足指定范围之内的条件记录not in查询不在指定范围之内的条件记录带between and 的范围查询带like的字符匹配查询(d%以d开头,%d以…

猫头虎分享已解决Bug || SyntaxError: Unexpected token o in JSON at position 1 ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【MATLAB】小波神经网络回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 小波神经网络回归预测算法是一种利用小波变换和人工神经网络相结合的方法&#xff0c;用于解决回归预测问题。下面将详细介绍该算法的原理与方法&#xff1a; 小波变换&#xff1a; 小波变…

rocketMQ下载、安装及配置

topic主题 - 里边存在多个队列&#xff08;队列是真实存在的&#xff09; rocketMQ安装及配置 一、官网下载 windows和linux系统版本都一样。Binary 下载 下载 | RocketMQ (apache.org) 二、修改运行内存及broker.conf、配置环境变量 1、修改根目录->bin目录下runserve…