JavaScript知识-函数基础知识、匿名函数、闭包函数、箭头函数、js内置对象和方法
JavaScript函数
1.函数的语法格式
function 函数名(形参1,形参2,形参3....){
// 函数注释,解释说明该函数用来做什么
函数体代码
return 返回值
}
2.无参函数
function func1(){
console.log('hello world')
}
func1() // 调用 加括号调用与python中一样
3.有参函数
function func2(a, b){
console.log(a, b)
}
func2(1,2) //调用函数(传参)
func2(1,2,3,4,5,6) // 多了没关系 只要对应得数据
1 2
func2(1) // 少了也没关系
1 undefined
4.关键字arguments
arguments参数,可以获取传入得所有数据,也支持return和匿名函数
1.能够获取函数接受得索引参数
function func2(a,b){
console.log(arguments) // 能够获取函数接受得索引参数
console.log(a,b)
}

2.关键字arguments(限制函数不能多也不能少)
function func2(a, b){
if(arguments.length<2){
console.log('传少了')
}else if (arguments.length>2){
console.log('传多了')
}else{
console.log('正常执行')
}
}

5.函数返回值 关键字return
返回元素的个数
function index(){
return 666, 777, 888
}
res = index(); // 一次只能返回一个值

把返回值做成数组形式返回(可实现多元素返回)
function index(){
return [666, 777, 888]
}
res = index();

js不支持解压赋值
6.匿名函数(没有函数名)
function(){
console.log('所有只有好好学习)
}
var res = function(){
console.loh('嗯,好好学习把')
}

7.箭头函数
箭头左边的是形参 右边是返回值
var func1 = v => v;
上面等价于下面这句
var func1 = function(v){
return v
}
var func2 = (arg1,arg2) => arg1+arg2
等价于
var func2 = function(arg1,arg2){
return arg1+arg2
}

8.函数的全局变量与局部变量
1.局部变量:
在JavaScript函数内部声明的变量(使用var)是局部变量,索引只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除
2.全局变量:
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它
3.变量生存周期
JavaScript变量的生命周期从它们被声明的时候开始
局部变量会在函数运行以后被删除
全局变量会在页面关闭后被删除
4.作用域
首先在函数内部查找变量,找不到则到外部函数查找,逐步找到最外层。与python作用域关系查找一模一样
函数全局局部案例:
var city = "BeiJing";
function f() {
var city = "ShangHai";
function inner(){
var city = "ShenZhen";
console.log(city);
}
inner();
}
f();
shenZhen
var city = "BeiJing";
function Bar() {
console.log(city);
}
function f() {
var city = "ShangHai";
return Bar;
}
var ret = f();
ret();
Beijing
9.闭包函数
var city = "BeiJing";
function f(){
var city = "ShangHai";
function inner(){
console.log(city);
}
return inner;
}
var ret = f();
ret();
ShangHai
10.js内置对象和方法
JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript中,对象是拥有属性和方法的数据。
我们在学习基本数据类型的时候已经带大家了解了,JavaScript中的Number对象、String对象、Array对象等。
注意var s1 = "abc"和var s2 = new String("abc")的区别:typeof s1 --> string而 typeof s2 --> Object

类似于python中的内置函数或者内置模块
固定语法
var 变量名 = new 内置对象名();
1.自定义对象
JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键。
可以看成是我们python中的字典 但是js中的自定义对象要比python里面的字典操作起来更加方便
2.创建自定义对象{}
var d1 = {'name' : 'jason','age' : 18}
3.第一种方式 创建自定义对象
var d = {'name':'jason','age':18}
typeof d
'object'
d['name']
'jason'
d.name
'jason'
d.age
18
4.支持for循环
ar d = {'name':'jason','age':18}
for(let i in d){
console.log(i,d[i])
}
VM432:2 name jason
VM432:2 age 18

5.使用new()自定义对象的方式
第二种创建自定义对象的方式 需要使用关键字 new
var d2 = new Object()
d2.name = 'jason'
d2
{name: 'jason'}
d2['age'] = 18
d2
{name: 'jason', age: 18}
Date对象
let d3 = new Date()
Thu Aug 25 2022 20:06:32 GMT+0800 (中国标准时间)
格式化时间
d3.toLocaleString()
'2022/8/25 20:06:32'
也支持自己手动输入时间(自定制)
let d4 = new Date('2022/08/25 12:12:45')
d4
Thu Aug 25 2022 12:12:45 GMT+0800 (中国标准时间)

时间对象方法
var d = new Date();
//getDate() 获取日
//getDay () 获取星期
//getMonth () 获取月(0-11)
//getFullYear () 获取完整年份
//getYear () 获取年
//getHours () 获取小时
//getMinutes () 获取分钟
//getSeconds () 获取秒
//getMilliseconds () 获取毫秒
//getTime () 返回累计毫秒数(从1970/1/1午夜)
JSON序列化对象
1.python与js序列化与反序列化
在python中序列化反序列化
dumps 序列化
loads 反序列化
在js中也有序列化与反序列化
JSON.stringify()
JSON.parse()
2.js序列化使用
let d7 = {'name':'jason','age':18}
序列化
let res = JSON.stringify(d7)
res
'{"name":"jason","age":18}'
反序列化
JSON.parse(res)
{name: 'jason', age: 18}
3.javascript序列化基于网络发送给python
需求:如果当前js中有一个布尔值true需要基于网络发送给python程序并且让python转换成布尔值 如何操作
1.在js中使用JSON.stringify()序列化成json格式字符串
2.基于网络发送给python程序(自动编码)
3.python接收 解码并反序列化
RegExp正则对象
在python中如果需要使用正则 需要借助re模块
在js中需要我们取创建正则对象
1.new代表创建对象
let regl = new RegExp('^[a-zA-Z][a-zA-z0-9]{5,11}')
2.推荐使用
let reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
匹配内容
reg1.test('woshidashuaibi')
res2.test('woshidashuaibi')
3.获取字符串里面所有的字母s
let sss = 'nish asoswo shi'
sss.match(/s/) // 拿到一个就停止了
4.解决拿到一个就停止的问题,使用全局匹配/g
sss.match(/s/g) // 全局模式
(4) ['s', 's', 's', 's']
全局匹配模式:正则表达式的最后不加g则表示匹配成功就结束 加g表示全局匹配,全局匹配会有一个lastindex属性
let reg3 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/g
reg3.test('egondsb') // 全局模式有一个lastindex属性
true
reg3.test('egondsb')
false
reg3.test('egondsb')
true
reg3.test('egondsb')
false
如果在后面加了一个/g的时候,每一次匹配结束后,它都会等在那里,如果再次校验的时候,它会基于当前页面进行再次向后移动,然后就会报false,报完false以后它会重置走到最开始位置
reg3.test('egondsb')
true
reg3.lastIndex
7
reg3.test('egondsb')
false
reg3.lastIndex
0
let reg4 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/
reg4.test()
reg4.test() //什么都不传 默认的是undefined
true
reg4.rest()
true
校验时不传参数默认传的是undefined
reg4.test(undefined)
true
JavaScript知识-函数基础知识、匿名函数、闭包函数、箭头函数、js内置对象和方法的更多相关文章
- javaScript中Math内置对象基本方法入门
概念 Math 是javaScript的内置对象,包含了部分数学常数属性和数学函数方法. Math 不是一个函数对象,用户Number类型进行使用,不支持BigInt. Math 的所有属性与方法都是 ...
- JavaScript (内置对象及方法)
JavaScript中的对象分为3种:内置对象.浏览器对象.自定义对象 JavaScript 提供多个内置对象:Math/Array/Number/String/Boolean... 对象只是带有属性 ...
- web前端学习(四)JavaScript学习笔记部分(6)-- js内置对象
1.JS内置对象-什么是对象 1.1.什么是对象: JavaScript中的所有事物都是对象:字符串.数值.数组.函数 每个对象带有属性和方法 JavaScript允许自定义对象 1.2.自定义对象: ...
- JavaScript之函数,词法分析,内置对象和方法
函数 函数定义 JavaScript中的函数和Python中的非常类似,只是定义方式有点区别. // 普通函数定义 function f1() { console.log("Hello wo ...
- JS-安全检测JavaScript基本数据类型和内置对象的方法
前言:在前端开发中经常会需要用到检测变量数据类型的需求,比如:判断一个变量是否为undefined或者null来进行下一步的操作,今天在阅读“编写高质量代码-改善JavaScript程序的188个建议 ...
- Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法
知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...
- 【JavaScript学习】-JS内置对象1-对象概述
对象(object): JavaScript 中的所有事物都是对象,如:字符串.数值.数组.函数等,每个对象带有属性和 方法.JavaScript 提供多个内建对象,比如 String.Date.Ar ...
- 【JavaScript学习】-JS内置对象3-String对象
定义: 定义字符串的方法就是直接赋值,例如:var mystr="Javascript is good!"; 访问字符串的属性: length属性 eg:var myl=mystr ...
- 【JavaScript学习】-JS内置对象2-Data对象
Date对象: Data对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义: //默认初始值定义: var dataName=new Date(); /*使用关键字new;Da ...
- javascript 内置对象和方法
一.自定义对象 方法1 /* 自定义对象 */ var sex= "gender" var person={"name": "tom", & ...
随机推荐
- 干货分享:Dify中4种核心变量详解!
在 Dify 工作流(Workflow 和 Chatflow)的实现中,"变量"做为最基础.最核心的组件发挥着不可或缺的作用,因为它承载了不同节点间数据传递的作用. 也就是说,我们 ...
- Github Copilot 实战: 从零开始用AI写一个OCR工具 (3)
源码 https://github.com/densen2014/Blazor100/tree/master/AI/MiOcr 添加一个屏幕截图功能,显示截图起始点,结束点,截图区域,按键ESC取消截 ...
- ODOO里面的约束与PG数据库里面的约束
一.odoo里面的约束写法 1.模型约束@api @api.constrains('parent_id') def _check_parent_id(self): if not self._check ...
- Golang遍历空数组实现指定次数的循环
var nums [10][0]int for range nums { fmt.Println("这里循环输出十次") } golang 的for遍历还是比较简单的,为什么还要用 ...
- DBA必备神器:让Oracle关库不再心惊胆战!
我们的文章会在微信公众号"Oracle恢复实录"和博客网站同步更新,欢迎关注收藏.也欢迎大家转载,但请在文章开始处标注文章出处,谢谢! 由于博客中包含大量代码,建议通过网页浏览以获 ...
- 边学边练,福利无限 —— OceanBase DBA 实战营(第一季)火热进行中!
首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 OceanBase 相关的各种技术内容.欢迎感兴趣的朋友们关注! 活动背景 20 ...
- MySQL技术内幕 InnoDB存储引擎 B+树索引的使用 笔记
什么时候添加B+树索引呢? 在访问表中很少一部分时使用B+树索引才有意义. Q: 怎么查看索引是否是高选择性的呢? A:可以通过SHOW INDEX 结果中的列 Cardinality 来观察.Car ...
- 不写代码,让 AI 生成手机 APP!保姆级教程
你现在看到的 APP,是我完全用 AI 生成的,一行代码都没写!怎么做到的呢? 大家好,我是程序员鱼皮.AI 发展很快,现在随随便便就能生成一个网站,但是怎么纯用 AI 开发能在手机上运行的 APP ...
- 数栈技术分享:用短平快的方式告诉你Flink-SQL的扩展实现
数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...
- 十、buildroot系统 桌面配置
4.4.桌面控制 4.4.1.weston 文件夹路径 /common/overlays/10-weston 1.核心设置 配置 Weston 的核心设置 文件 /etc/xdg/weston/wes ...