用户:yee剑走天下查看:50 回复:16 评论:50 创建时间:2022-07-03T14:48:41
那么呢
这个贴子()
我就大发慈悲()出一期教程()
好像上一次发代码教程,还是在上一次(划掉)
反正隔了很久就对了()
/-----------------------不怎么华丽的分割线-----------------------/
那么呢()首先让我们了解函数的基本概念()
函数()顾名思义()就是函数(划掉),作用吗()就是可以简便代码,更加整洁(脏乱差)
那么今天就拿最基础的玩家对话框函数来举个栗子()
一个函数(箭头函数除外)必须得有关键词function
就像这样:
function//就这玩意
那么接下来()就像变量一样啊()得给函数取个名()
就像这样:
function textDialog
好()那么函数名取完了()那么接下来该干嘛?()当然是搞参数(也可以没有参数)
举个简单的栗子:
function say(message) {
}
参数我们写message()那么基本上是个人就看得懂()然后函数的执行过程用大括号包起来。并且函数大部分都会有一个返回值()但是有些也没有()
返回一个值用关键词return
就像这样:
function say(message) {
return world.say(message)
}
可以看到()这个函数返回的就是在世界频道播报message()
好了()那么基础概念学完了()
该咋调用呢()
很简单()就用函数名(参数)就行了()
就像这样:
function say(message) {
return world.say(message)
}
say('给帖主关注()')
好()现在我们撤回玩家对话框的函数)
那么就可以这样()
function textDialog(entity, title, content) {
return entity.player.dialog({
type: Box3DialogType.TEXT,
title,
content
})
}
这个函数就是return一个玩家的对话框,然后参数分别在dialog里面调用()懂了吧?()很简单对吧()
好()那么呢()接下来我们就讲一下函数的几个其他的形态()()()()
1.匿名函数()
特点:很像一个变量()
格式:
let 函数名= function(参数) {
执行步骤
}
缺点:就像变量一样()不定义就调用就直接报错GG()
把上面那个对话框函数转化成匿名函数是这样:
let textDialog = function (entity, title, content) {
return entity.player.dialog({
type: Box3DialogType.TEXT,
title,
content
})
}
2.箭头函数
特点:很不像函数,省略了关键词function
格式:let 函数名 = (参数) => {
执行步骤
}
缺点:我也不清楚())(()
再喵家对话框函数转化一下就是这样:
let textDialog = (entity, title, content) => {
return entity.player.dialog({
type: Box3DialogType.TEXT,
title,
content
})
}
3.异步函数
特点:可以让函数异步执行
缺点:不加await大部分情况会报错()
格式:async function 函数名(参数) => {
执行步骤
}
比如把上面的玩家对话框改成画蛇添足的异步函数形式()
async function textDialog(entity, title, content) {
return await entity.player.dialog({
type: Box3DialogType.TEXT,
title,
content
})
}
当然,这个async修饰函数,也可以用在箭头函数以及匿名函数中
就像这样:
// 箭头函数
let 函数名 = async (参数) => {
//执行步骤
}
//匿名函数
let 函数名 = async function(参数) {
//执行步骤
}
那么还有一种特别的函数,叫全局函数,就是可以跨脚本调用该函数
但是好像只能用匿名和箭头函数的形式吧()
把上面那个玩家对话框转化一下:
// 这里用的是箭头函数的格式())()()(
global.textDialog = (entity, title, content) => {
return entity.player.dialog({
type: Box3DialogType.TEXT,
title,
content
})
}
最后()如果不想用global但是又想跨脚本调用怎么办?
很简单
首先在该函数所在的脚本的最后面
打上代码:
module.exports = {
函数名,
函数名,
函数名
}
可输入多个函数()
然后再到想要调用的脚本的前面
打上代码:
const { 函数名, 函数名, 函数名 } = require('./该函数所在脚本的JS文件名.js')
好了()那么这期教程到此结束()
如有错误还请指出()
给个关注吧awa~
SKQA//回复某个神岛12大天王成员😅
//没有return的函数返回值是undefined怕是不知道吧
//say代替world.say这么写确实没错,但分情况可以有多种写法
//如果只是把world.say简化成say的话 那这样写更方便
global.say = world.say
//如果在函数内充当卫语句的话 那这样写更方便
function func(p){
if(!p)return world.say('f')
}
//或
function func(p){
if(!p){world.say('f');return}
}
//上面两种写法都是一样的,看个人代码风格习惯,我更喜欢第一种
//以后自己代码水平不行就别来误导人昂😅点赞1
评论
SKQA//补充:
//1.调用函数后必须加括号,不加括号将返回函数定义,但本身是对象
function myFunc(){
c喵ole.log('Hello world!')
}
var x=myFunc //x的值为: function myFunc(){ c喵ole.log('Hello world!') }
//2.可以使用new关键词定义函数,那么函数将是一个对象
var add=new Function('a','b','return a+b') //前几个是参数,最后一个是函数定义
//3.在函数里面声明的变量,是函数的局部变量,如在函数外访问会报错
function myFunc(arg){
var x='x'
c喵ole.log(x) //函数内可以访问x
}
c喵ole.log(x) //函数外无法访问x,会报错
//4.函数中会有一个arguments,表示参数,是个数组,也是局部的,只能在函数内访问
//他最大的特点就是:不命名参数,也能使用。
function add(){ //不用命名参数
return arguments[0]+arguments[1]
}
var x=add(1,2) //x的值为:2
//5.函数也有内置的属性和方法,像字符串有length,slice一样,这里举几个常用的
//length: 函数的参数个数
function myFunc(a,b,c){return a+b+c}
var x=myFunc.length //x的值为:3
//toString()和valueOf():这两个方法都返回函数定义(当然我更喜欢String(func))
function myFunc(a,b,c){return a+b+c}
var x=myFunc.toString() //x的值为:function myFunc(a,b,c){return a+b+c}点赞2
评论