作用域
作用域是指程序中某个变量或函数可被访问的范围,也就是变量或函数在代码中被定义和使用的区域。一个作用域可以包含另一个作用域,形成嵌套作用域。
在JavaScript中,有以下几种作用域:
-
全局作用域(Global Scope):定义在最顶层,不在任何函数内部的变量,拥有全局作用域,可以在整个程序中被访问。
-
函数作用域(Function Scope):在函数内定义的变量只能在函数内部被访问,不能在函数外部访问。同一函数内的变量之间互相可见。
-
块级作用域(Block Scope):在ES6之前,JavaScript中没有块级作用域。在ES6中引入了let和const关键字,用于定义块级作用域的变量。块级作用域可以包含另一个块级作用域或函数作用域。
-
动态作用域(Dynamic Scope):动态作用域是一种比较少见的作用域,它与具体的函数调用相关联,而不是与函数声明相关联。在JavaScript中并没有实现动态作用域。
了解作用域的概念和使用,可以帮助我们更好地理解JavaScript的变量和函数的作用范围,从而编写更加健壮的代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LearningCurve : MonoBehaviour
{
public string characterClass="Ranger";//类作用域
// Start is called before the first frame update
void Start()
{
inserted directly!");
int characterHealth=100;//局部作用域1
Debug.Log(characterClass+"-HP:"+characterHealth);
}
void CreateCharacter(){
string characterName="Aragorn";//局部作用域2
Debug.Log(characterName+"-"+characterClass);
}
void Update()
{
}
}
定义方法
public void GenerateCharacter()
{
Debug.Log("Character:艾薇尔");
}
在void start里调用这个类型
就可以做到了
void Start()
{
GenerateCharacter();
}
方法命名要用帕斯卡命名法
帕斯卡命名法:
- 每个单词的首字母都大写。
驼峰命名法:
- 第一个单词的首字母小写,后续每个单词的首字母大写。
参数
实参和形参
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LearningCurve : MonoBehaviour
{
public int CharacterLevel=43;//实参
void Start()
{
string CharacterName="艾薇尔";//实参
GenerateCharacter("幽梦",CharacterLevel);
//幽梦实参
}
public void GenerateCharacter(string name,int level)//name,level为形参
{
Debug.LogFormat("您的角色:{0}-角色等级:{1}",name,level);
}
}
返回值
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LearningCurve : MonoBehaviour
{
void Start()
{
string CharacterName="艾薇尔";//实参
int CharacterLevel=43;//实参
int nextSkillLevel=GenerateCharacter(CharacterName,CharacterLevel);
Debug.Log(nextSkillLevel);
Debug.Log(GenerateCharacter("幽梦",CharacterLevel));
}
public int GenerateCharacter(string name,int level)//name,level为形参
{
// Debug.LogFormat("您的角色:{0}-角色等级:{1}",name,level);
return level+5;
}
}
characterLevel为同一条数据,在方法里郑家过一次,所以两条数据都修改了。
IFElse
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LearningCurve : MonoBehaviour
{
public bool hasDungenoKey=true;
void Start()
{
if(!hasDungenoKey)
{
Debug.Log("You possess the scared key - enter");
}else
{
Debug.Log("You have not proved yourself worthy,warrior");
}
}
}
这是一个简单的判断
嵌套判断,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LearningCurve : MonoBehaviour
{
public bool pureOfHeart=true;
public bool hasSecertIncantation=false;
public string rareItem ="Relic Stone";
void Start()
{
OpenTreasureChamber();
}
public void OpenTreasureChamber()
{
if(pureOfHeart &&rareItem=="Relic Stone"){
if(!hasSecertIncantation){
Debug.Log("You have the spirit, but not the knowledge");
}else{
Debug.Log("The treasure is yours,worthy hero!");
}
}else{
Debug.Log("Come back when you what it takes");
}
}
}