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 ,但这样做的后果是定义的变量自
动拥有了全局作用域,即使你是在一个函数内定义该变量,它也是全局变量。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值