用户:yee剑走天下查看:413 回复: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~
SCS_user_LoeheodVOQglobal换成globalThis也行
点赞0
评论
global和globalThis的区别是啥啊awa
我也不知道
globalThis是可以枚举属性的,global不行
严格模式下没有global?
不是的,你可以试一试 globalThis.属性名=内容 和 global.属性名=内容 的时候,把“属性名 这个变量输入在代码区,观察图标
我试过了,global就是globalThis,global === globalThis是true
啊对,雀食
你好2050一看就有问题,return返回的是一个数值或布尔值,而不是返回一个功能,world.say不用return
点赞0
评论
难道功能没有返回值?照你这么说,任何递归代码都是有问题的咯
你return 1+2有没有问题?得3,那1+2是数值吗
你在控制台试试 function test(){return 1+2;};test() 看看会不会报错()
不然呢。它又不是看1+2,只看得出来的3
请问world.say有返回值?
有啊,undefined
无语 自己去试
请问你拿什么输出?此时test函数只是个数值
。。。我好像没说会报错吧
我只是说不用
。。。我为什么要输出,我把他看成过程函数不行吗
。。。反正不会报错就是了
有问题?你很厉害?谁说返回一定要数值或者布尔值?那请问你这么解释return entity.player.dialog
话说回来()这不是2050帝吗())(()
捉())(())(
那我不李姐“问题”在哪
他自己就是个“问题”
问题就是,你想让这个函数代替world.say,你return干嘛?return不就相当于没用了
你大聪明,你怕不是以为return就是跳过不执行下一步的意思吧?你可真厉害()甚聪慧
诶呦,代码比不过别人就开始喷别人哦~2050帝就是厉害哦~
??
globalThis.unescape('%32%30%35%30%u5E1D%uFF01')和unescape('%32%30%35%30%u5E1D%uFF01')是一样的对不,然后,return 上面的第一个和return 上面的第二个中,因为globalThis.unescape和unescape是一样的,但为啥globalThis.unescape(懒得写了)有问题?请这位大神讲解
拜托,我说的是第四栏
对呀,刚刚说的和第四栏都是return+对象名+.+属性名+()类型
请问,你上面说的是第四栏的吗
虽然不一样,类型都一样,举个例子都不行了___
我只是说world.say不用return,直接function say(message) { world.say(message) }就行啦
每个人的写法都不一样的,别人这样写,你这样写,都不碍对方事,要么有人反对你的意见
那你爱看不看不看拉倒,可以走远点谢谢()
一天天的,信息箱都是你的回复,烦得要死
但我还是很无语
我也不斤斤计较了,赶紧各做各事把
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
评论
给你置顶了yee))))
置喵刚发的这条是回复某个神岛12大天王成员的()
喵=顶/我()()
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
评论
纠错:第4条x的值为3
纠错:第1条是指输出函数不带括号会输出函数定义,用词错了
()