【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.hqwc.cn/news/468650.html

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

相关文章

SNMP 简单网络管理协议、网络管理

目录 1 网络管理 1.1 网络管理的五大功能 1.2 网络管理的一般模型 1.3 网络管理模型中的主要构件 1.4 被管对象 (Managed Object) 1.5 代理 (agent) 1.6 网络管理协议 1.6.1 简单网络管理协议 SNMP 1.6.2 SNMP 的指导思想 1.6.3 SNMP 的管理站和委托代理 1.6.4 SNMP…

【Zigbee课程设计系列文章】Zigbee开发环境搭建

【Zigbee课程设计系列文章】Zigbee开发环境搭建 前言IAR 下载安装Z-Stack协议栈安装 &#x1f38a;项目专栏&#xff1a;【Zigbee课程设计系列文章】&#xff08;附详细使用教程完整代码原理图完整课设报告&#xff09; 前言 &#x1f451;由于无线传感器网络&#xff08;也即…

C语言——枚举类型

&#x1f4dd;前言&#xff1a; 在之前的文章中我们已经讲解了自定义类型中的结构体类型和联合体类型&#xff0c;现在我们再充分学习一下C语言中的枚举类型&#xff1a; 1&#xff0c;什么是枚举类型 2&#xff0c;枚举类型的定义和变量的声明 3&#xff0c;对变量进行赋值 &a…

[计算机网络]---网络编程套接字

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、基础知识…

Android Graphics 图像显示系统 - 开篇

“ 随着学习的不断深入和工作经验的积累&#xff0c;欲将之前在博客中整理的Android Graphics知识做进一步整理&#xff0c;并纠正一些理解上的错误&#xff0c;故开设Graphics主题系列文章 ” 序言 由于工作需要&#xff0c;也源于个人兴趣&#xff0c;终于下决心花时间整理一…

【前端设计】炫酷导航栏

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 html <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

车载诊断协议DoIP系列 —— DoIP APP车辆识别和声明请求报文

车载诊断协议DoIP系列 —— DoIP APP车辆识别和声明请求报文 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江…

Boost.Asio-使用Boost.Asio和OpenWeatherMap API获取天气的简单示例

OpenWeatherMap API是一个提供天气数据的开放接口&#xff0c;可以通过该接口获取全球范围内的实时天气。 1.获取OpenWeatherMap API的密钥 去官网https://openweathermap.org注册后&#xff0c;自主生成密钥&#xff0c;如图 2.获取用的代码(方法1) #include "stdafx.h&…

BFS与DFS初级练习(排列数字,n-皇后,走迷宫)

BFS与DFS初步了解 DFS&#xff08;深度优先搜索&#xff09;和BFS&#xff08;广度优先搜索&#xff09;是两种常用的图遍历算法。 DFS是一种递归的搜索算法&#xff0c;它从起始节点开始&#xff0c;沿着路径依次访问与当前节点相邻的未访问节点&#xff0c;直到无法继续访问…

[NSSRound#17 Basic]WEB

1.真签到 看robots.txt 密码先base32再base64得到md5加密的密文&#xff0c;在线解得到密码为Nss hint用16进制转字符串&#xff0c;提示新生赛遇到过 是一个敲击码加密 账号是ctfer,登录之后源码提示在F111n4l.php 要求nss参数若比较等于732339662&#xff0c;但是不能是数…

助眠神器小程序源码|白噪音|小睡眠|微信小程序前后端开源

安装要求和说明后端程序运行环境&#xff1a;NginxPHP7.4MySQL5.6 PHP程序扩展安装&#xff1a;sg11 网站运行目录设置为&#xff1a;public 伪静态规则选择&#xff1a;thinkphp 数据库修改文件路径&#xff1a;/config/database.php需要配置后端的小程序配置文件&#xff0c;…

Unresolved reference: kotlinx 和 Unresolved reference:xxx

Unresolved reference: kotlinx 这个报错是因为build.gradle中忘记apply plugin了 apply plugin: kotlin-android-extensions如下 同步以后再次编译发现报错 Unresolved reference:xxx 是因为用于使用 Gradle 构建的 Kotlin 版本与 IDE 插件中的版本不一样的原因 解决方法 …