猫史档案馆


屑屑的教程——函数

用户:yee剑走天下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~


回复

上一页1 页 / 共 1下一页
yee剑走天下yee剑走天下

   

点赞0


评论


云游box3der尖头叉子云游box3der尖头叉子

sofa~

点赞0


评论


Ezra__Ezra__

 

 

点赞0


评论


Ezra__Ezra__

不讲讲arguments和剩余参数咩

点赞0


评论


若潇羽少若潇羽少

(——

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

global换成globalThis也行

点赞0


评论


你好2050你好2050

一看就有问题,return返回的是一个数值或布尔值,而不是返回一个功能,world.say不用return

点赞0


评论


YLG_個YLG_個

话说你怎么有排版的()()()

点赞1


评论


SKQASKQA

//回复某个神岛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


评论


麟_月麟_月

  

点赞0


评论


SKQASKQA

//补充:
//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


评论


yee剑走天下yee剑走天下

喵d

点赞0


评论


Star_Ink_sansStar_Ink_sans

【一剑捕捉器】我敢说这个评论绝对不会被一剑回复()

点赞1


评论


yee剑走天下yee剑走天下

ddd

点赞0


评论


树林归来树林归来

创协会员教程评分:9.0分,挺不错的教程~

点赞1


评论


无极玄天无极玄天

看起来这很不错

点赞0


评论