js数据结构
Posted web-gmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js数据结构相关的知识,希望对你有一定的参考价值。
1.javascript 中的变量默认是全局变量,严格地说,甚至不需要在使用前进行声明。如果对一 个事先未予声明的 JavaScript 变量进行初始化,该变量就成了一个全局变量。 在 JavaScript 中声明变量,需使用关键字 var,后跟变量名,后面还可以跟一个赋值表达 式。
下面是一些例子:
var number; var name; var rate = 1.2; var greeting = "Hello, world!"; var flag = false;
2.
JavaScript
使用标准的算术运算符:
• +
(加)
•
-
(减)
• *
(乘)
• /
(除)
•
%
(取余)
JavaScript
同时拥有一个数学库,用来完成一些高级运算,比如平方根、绝对值和三角函
数。算术运算符遵循标准的运算顺序,可以用括号来改变运算顺序。
var x = 3;
var y = 1.1;
print(x + y);
print(x * y);
print((x+y)*(x-y));
var z = 9;
print(Math.sqrt(z));
print(Math.abs(y/x));
3.根据布尔表达式的值,判断结构让程序可以选择执行哪些程序语句。本书用到的两种判断
结构为
if
语句和
switch
语句。
if
语句有如下三种形式:
•
简单的
if
语句;
•
if-else
语句;
•
if-else if
语句。
var mid = 25;
var high = 50;
var low = 1;
var current = 13;
var found = -1;
if (current < mid) {
mid = (current-low) / 2;
}
var mid = 25;
var high = 50;
var low = 1;
var current = 13;
var found = -1;
if (current < mid) {
mid = (current-low) / 2;
}
else {
mid = (current+high) / 2;
}
var mid = 25;
var high = 50;
var low = 1;
var current = 13;
var found = -1;
if (current < mid) {
mid = (current-low) / 2;
}
else if (current > mid) {
mid = (current+high) / 2;
}
else {
found = current;
}
另外一个判断结构是
switch
语句。在有多个简单的选择时,使用该语句的代码
结构更加清晰。
putstr("Enter a month number: ");
var monthNum = readline();
var monthName;
switch (monthNum) {
case "1":
monthName = "January";
break;
case "2":
monthName = "February";
break;
case "3":
monthName = "March";
break;
case "4":
monthName = "April";
break;
case "5":
monthName = "May";
break;
case "6":
monthName = "June";
break;
case "7":
monthName = "July";
break;
case "8":
monthName = "August";
break;
case "9":
monthName = "September";
break;
JavaScript的编程环境和模型 | 5case "10":
monthName = "October";
break;
case "11":
monthName = "November";
break;
case "12":
monthName = "December";
break;
default:
print("Bad input");
}
这是解决该问题最高效的方式吗?不是,但是这个例子充分展示了
switch
语句的工作原理。
JavaScript
中的
switch
语句和其他编程语言的一个主要区别是:在
JavaScript
中,用来判
断的表达式可以是任意类型,而不仅限于整型;而
C++
和
Java
等一些语言就要求该表达
式必须为整型。事实上,如果你留意观察,上面那个例子中代表月份的数字其实是字符串
类型。不用将它们转化成整型,就可以直接在
switch
语句中使用。
4.
从本质上都具有循环的特性。两种循环结构:
while
循
环和
for
循环。
如果希望在条件为真时执行一组语句,就选择
while 循环。
var number = 1;
var sum = 0;
while (number < 11) {
sum += number;
++number;
}
print(sum); // 显示 55
如果希望按执行次数执行一组语句,就选择
for 循环。
var number = 1;
var sum = 0;
for (var number = 1; number < 11; number++) {
sum += number;
}
print(sum); // 显示 55
var numbers = [3, 7, 12, 22, 100];
var sum = 0;
for (var i = 0; i < numbers.length; ++i) {
sum += numbers[i];
}
print(sum); // 显示 144
5.
函数
JavaScript
提供了两种定义函数的方式,一种有返回值,一种没有返回值(这种函数有时
也叫做
子程
或
void
函数
)。
function factorial(number) {
var product = 1;
for (var i = number; i >= 1; --i) {
product *= i;
}
return product;
}
print(factorial(4)); // 显示 24
print(factorial(5)); // 显示 120
print(factorial(10)); // 显示 3 628 800
function curve(arr, amount) {
for (var i = 0; i < arr.length; ++i) {
arr[i] += amount;
}
}
var grades = [77, 73, 74, 81, 90];
curve(grades, 5);
print(grades); // 显示 82,78,79,86,95
JavaScript
中,函数的参数传递方式都是按值传递,没有按引用传递的参数。但是
JavaScript
中有保存引用的对象,比如数组,
它们是按引用传递的。
6.变量作用域
变量的
作用域
是指一个变量在程序中的哪些地方可以访问。
JavaScript
中的变量作用域被
定义为
函数作用域
。这是指变量的值在定义该变量的函数内是可见的,并且定义在该函数
JavaScript
的编程环境和模型 |
7
内的嵌套函数中也可访问该变量。
在主程序中,如果在函数外定义一个变量,那么该变量拥有
全局作用域
,这是指可以在包
括函数体内的程序的任何部分访问该变量。下面用一段简短的程序展示全局作用域的工作
原理:
function showScope() {
return scope;
}
var scope = "global";
print(scope); // 显示 "global"
print(showScope()); // 显示 "global"
函数
showScope()
可以访问变量
scope
,因为
scope
是一个全局变量。可以在程序的任意位
置定义全局变量,比如在函数定义前或者函数定义后。
在
showScope()
函数内再定义一个
scope
变量,看看这时发生了什么:
function showScope() {
var scope = "local";
return scope;
}
var scope = "global";
print(scope); // 显示 "global"
print(showScope()); // 显示 "local"
showScope()
函数内定义的变量
scope
拥有局部作用域,而在主程序中定义的变量
scope
是
一个全局变量。尽管两个变量名字相同,但它们的作用域不同,在定义它们的地方访问时
得到的值也不一样。
这些行为都是正常且符合预期的。但是,如果在定义变量时省略了关键字
var
,那么一切
都变了。
JavaScript
允许在定义变量时不使用关键字
var
,但这样做的后果是定义的变量自
动拥有了全局作用域,即使你是在一个函数内定义该变量,它也是全局变量。
以上是关于js数据结构的主要内容,如果未能解决你的问题,请参考以下文章