JS++ 变量和数据类型

JS++ 变量和数据类型

在本教程中,我们将介绍JS++中的变量。让我们从一个例子开始。创建一个新的文件夹并命名为 “变量”。然后创建一个新文件并命名为 “Variables.jspp”。写入以下代码。

external ;

string firstString = "This is a string.";
int firstInt = 1;
double firstDouble = 1.1;
bool firstBool = true;("#string_content").text(firstString);
("#int_content").text(firstInt);("#double_content").text(firstDouble);
$("#bool_content").text(firstBool);

将Variables.jspp保存到你的Variables文件夹。然后创建第二个名为 “Variables.html “的文件,并写入以下内容。

<!DOCTYPE html>
<title>Variables program</title>
<body>

<p id="string_content"></p>
<p id="int_content"></p>
<p id="double_content"></p>
<p id="bool_content"></p>

<script src="http://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="Variables.jspp.js"></script>

</body>
</html>

将Variables.html保存到你的Variables文件夹。编译Variables.jspp,然后在浏览器中打开Variables.html。如果一切顺利,你的文档应该显示Variables.jspp中四个变量的值。

  • ## 变量和类型

当我们在Variables.jspp中声明我们的变量时,我们给每个变量一个类型:字符串、int、double和bool。你可以使用这种类型的变量是JS++的一个重要特征,也代表了与JavaScript的一个关键区别。在JavaScript中,你用var关键字声明一个变量,这样的变量是没有类型的。例如,同一个变量可能首先是一个字符串,然后是一个数字,再然后是一个布尔值。相比之下,在JS++中,当你声明一个变量属于某个特定的类型时,你就告诉编译器,这个变量将只持有该特定类型的数据。因此,例如,字符串变量持有字符序列,int变量持有整数,double变量持有浮点数,bool变量持有逻辑值(真和假),等等。

如果你的程序不小心给一个类型的变量分配了错误的值,会发生什么?这将导致编译失败,而不是运行时错误。例如,再看一下这一行。

bool firstBool = true;

Suppose you change this to:

bool firstBool = "This is a string, not a bool.";

你的程序将不再被编译。如果你尝试,编译器会抱怨说它不能将一个字符串转换为一个bool。

为什么这种问题会导致编译失败,而不是运行时错误?答案是,它使错误更容易被发现,也更容易在开发的早期阶段进行修复。这样一来,错误就不太可能隐藏在代码的某个复杂部分,只是在程序上线后的关键阶段才出现。这在大型项目和团队中特别有用。在这方面,JS++比JavaScript更有优势,因为它不使用类型化的变量,所以在编译时不会出现这类错误。

注意: JS++并不强迫你使用类型化的变量。如果你愿意,你仍然可以使用非类型化的变量,就像你在JavaScript中做的那样–在第9章中会有更多的介绍。然而,当你使用类型化的变量时,如果程序被编译,它们的值将被保证为正确的类型。

我们在Variables.jspp中使用的四种类型–字符串、int、double和bool–是JS++的**原始数据类型之一。
你可以在这里找到它们的完整列表。JS++原始数据类型

关于数字原始数据类型,值得注意的是,JS++不仅包含int和double,还包含byte、short、无符号int和无符号short(无符号类型只能包含正数)。这些类型在它们使用的内存量和它们所能容纳的数字范围上都有所不同。

关于文本数据类型,JS++包含char和string:如果你知道一个变量应该保存一个单独的字符,那么将你的变量声明为char是合适的。更为普遍的是,Js++中各种各样的原始数据类型给了你很大的灵活性来选择最合适的变量类型来达到你的目的。

JS++的数据类型并不局限于其基元。例如,还有函数类型、数组类型、回调类型和用户定义的类型。我们将在随后的教程中研究所有这些类型。然而,在本教程中,重点仍将放在基元类型上。

  • ## 声明和初始化变量

在Variables.jspp中,我们在不同的语句中声明了四个变量,但我们在声明变量的同时也初始化了每个变量。不过,你不一定要这样引入变量。例如,你可以在一个语句中声明一个变量,然后在后面初始化它。

bool firstBool;
// ...
firstBool = true;

你也可以在一条语句中声明几个相同类型的变量。

char firstChar, secondChar, thirdChar;

而且你可以在声明时初始化几个相同类型的变量。

char firstChar = `a`, secondChar = `b`, thirdChar = `c`;

如果一个变量在声明后但在初始化前被访问会发生什么?要想知道,让我们改变Variables.jspp的代码。

external ;

string firstString;
int firstInt;
double firstDouble;
bool firstBool;("#string_content").text(firstString);
("#int_content").text(firstInt);("#double_content").text(firstDouble);
$("#bool_content").text(firstBool);

如果你编译这段代码,然后在浏览器中打开Variables.html,你会看到每个变量都被设置为默认值:firstString被设置为””(空字符串),firstInt和firstDouble被设置为0,而firstBool被设置为假。你可以通过上面的链接看到JS++原始数据类型的默认值的完整列表。

  • ## 变量和范围

变量的范围是指该变量在程序中可见的部分(可通过名称访问)。在JS++中,一个变量的范围由声明它的代码块(一对大括号内的一段代码)决定:变量在声明后立即从同一代码块中的任何后续位置变得可见。例如,请考虑。

{
    string firstString;
    firstString = "Another string.";
}

这里没有问题,因为firstString的值是在声明了firstString之后但在同一个块中被修改的。相比之下,考虑一下。

{
    string firstString;
}

firstString = "Another string.";

现在有一个问题:这段代码不会被编译,因为firstString在声明它的代码块之外是不可见的。

当一个变量在每个显式代码块之外被声明时,(即由一对大括号定义的每个块),范围是如何工作的?在这种情况下,变量在被声明后可以从文件的任何地方看到。这也适用于文件中不包含任何显式代码块的情况,如Variables.jspp。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程