目标
学习到数组
一、if案例
<script>
var num1 = prompt("请输入财产值(wan)");
var num2 = prompt("请输入帅气值(px)");
var num3 = prompt("请输入身高值(cm)");
alert("财富是:" + num1 + "帅气值是:" + num2 + "身高值是:" + num3);
if (num1 > 180 && num2 > 500 && num3 > 180) {
alert("哇哦,最佳人选");
}
else if (num1 > 180 || num2 > 500 || num3 > 180) {
alert("考虑一下啊");
}
else {
alert("淘汰!");
}
</script>
二、基本语句
1.swich语句练习
成绩大于60合格,低于60不合格
代码如下(示例):
<script>
// 成绩大于60合格,低于60不合格
var num1 = prompt("请输入成绩");
alert("成绩是:" + num1);
switch (true) {
case num1 >= 60:
console.log("合格");
break;
default:
console.log("bu合格");
break;
}
</script>
2.while循环语句
练习:投资年利率为5%,从1000增长到5000,需多少年
<script>
var num1 = 1000;
var n = 0;
while (num1 < 5000) {
num1 = num1 * 1.05;
n++;
console.log("现在共有钱" + num1);
}
console.log("需要" + n + "年");
</script>
3.for循环
联系1-100间所有7的倍数的个数和总和
<script>
var n = 0;
var m = 0;
for (var i = 1; i <= 100; i++) {
if (i % 7 == 0) {
console.log(i);
m = m + i;
n++;
}
}
console.log("总和是" + m)
console.log("个数是" + n);
</script>
4.嵌套for循环
输出
*
**
***
<script>
var n = prompt("输入高度:");
for (var i = 0; i < n; i++) {
for (var j = 0; j < i + 1; j++) {
document.write("*");
}
document.write("<br/>");
}
</script>
九九惩罚表
<script>
for (var i = 1; i <= 9; i++) {
for (var j = 1; j <= i; j++) {
document.write("<span>" + j + "*" + i + "</span>");
}
document.write("<br/>");
}
</script>
<style type="text/css">
span {
display: inline-block;
width: 80px;
}
三、break与continue
break:用于swich或循环语句,终止离他最近的循环。可以在break后跟一个label这可以结束特定循环。
continue:跳过当次循环,默认离他最近的循环起作用。
四、对象
- 基本类型数据类型的数据,都是独立的,不为一个整体。对象为复合数据类型,对象可以保持多各不同数据类型的数据.是一个容器,使用方便。
- 读取对象中没有的属性不会报错而是返回undefind。修改可以使用够覆盖的方法。
- 对象属性名不强制要求遵守标识符的规范,但尽量遵守,若使用特殊属性名例如123,使用对象【”属性名“】=属性值。这种方式更加灵活,可以直接传递一个变量。
- 属性值:可以是任意类型。
<script>
//创建使用new关键字调用的函数,构造函数,创造对象并赋值
var obj = new Object();
//在对象中保存的值成为属性,相对中国添加属性,
//对象名.属性名=属性值
obj.name = "周絮";
obj.age = 29;
console.log(obj);
</script>
分类
1.内建对象
ES标准中定义的对象,ES中都可以使用,例如:Math、String、Number、Objcet。。。
2.宿主对象:
JS运行环境提供的对象,目前由浏览器提供,比如:DOM,BOM.
3.自定义对象:
开发人员创建对象。
五、引用数据类型和基本数据类型:
- 基本数据类型:保存在栈内存。变量:值。保存的是值
- 引用数据类型(对象):保存在堆内存,每保存一个新的对象,就会在堆内存张开辟一个新的空间而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象的引用,当一个变量修改属性时,另一个也会改变(通过修改地址,则会受到影响)。两个对象相比较事情,比较的为地址。保存的地址。
<script>
var obj2 = new Object();
var obj1 = new Object();
obj2.name = "zhouzishu";
obj1.name = "zhouzishu";
console.log(obj2);
console.log(obj1);
console.log(obj2 == obj1);
</script>
六、对象字面量
用对象的字面量创建一个对象,可以在创建对象时直接指定对象的属性
{属性名:属性值,属性名:属性值。。。}
<script>
var obj1 = {
name: "zhouzishu",
friend: "wenkexing"
};
console.log(obj1);
</script>
七、函数简介
- 封装功能,保存代码的作用。检查函数对象,返回function。
- 调用:函数对象();函数是一个对象
<script>
var fun = new Function("console.log(123);");
fun();
fun();
</script>
- 一般创建方式:
<script>
function fun() {
console.log("hh");
alert("hh");
document.write()
}
fun();
fun();
</script>
- 形参,实参
<script>
function fun(num1, num2) {
console.log(num1 + num2);
}
fun(1, 2);
</script>
- 形参、实参个数不匹配
1.实参多:会取到参数的个数
2.形参多:没有接收值定义为undefined,结果为NaN。
return返回值:返回即终止。
<script>
function fun() {
return 111;
}
console.log(fun());
</script>
- arguments的使用 :存储所有传递过来的实参,是一个伪数组(没有真正数组的一些方法pop() push())只有函数可用
<script>
function fun() {
console.log(arguments);
console.log(arguments.length);
console.log(arguments[2]);
}
fun();
fun(1, 2, 3);
</script>
八、数组
array定义:
一组数据的集合存放在单个变量下,可放任何类型,
new方式:
var arr=new Array();
字面量方式:
var arr=[];
获取数据元素:
1.索引,即下标从0开始。
2.格式:数组名【索引号】
<script>
var arr = [1, 2, "hh"];
console.log(arr[1]);
</script>
3.遍历:循环方式
<script>
var arr = [1, 2, "hh"];
for (var i = 0; i < 3; i++)
console.log(arr[i]);
</script>
4.数组长度:
数组名.length,元素个数。动态监测
<script>
var arr = [1, 2, "hh"];
for (var i = 0; i < arr.length; i++)
console.log(arr[i]);
</script>
5.案例:
1.求数组中的总和平均值
<script>
var arr = [1, 2, 17, 32];
var sum = 0;
for (var i = 0; i < arr.length; i++) {
sum = sum + arr[i];
}
ave = sum / arr.length;
console.log(sum);
console.log(sum, ave);
</script>
2.分隔字符串
<script>
var arr = [1, 2, 17, 32];
var str = ' ';
var sep = '!';
for (var i = 0; i < arr.length; i++) {
str = str + arr[i] + sep;
}
console.log(str);
</script>
6.数组扩容:
<script>
var arr = [1, 2, 17, 32];
arr.length = 10
console.log(arr.length);
console.log(arr);//多余的为空
//修改索引号
arr[4] = 'pink';//若位置以有元素则会替换
console.log(arr[4]);
console.log(arr);
//不可以给数组元素赋值,若直接赋值则其他元素没了
</script>
7.筛选数组:
1.
<script>
//选出大于10的
var arr = [1, 2, 17, 32];
var arr1 = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] > 10) {
arr1[j] = arr[i];
j++;
}
}
console.log(arr1);
</script>
2.
<script>
//选出大于10的
var arr = [1, 2, 17, 32];
var arr1 = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] > 10) {
arr1[arr1.length] = arr[i];
}
}
console.log(arr1);
</script>
冒泡排序:
<script>
var arr = [1, 2, 17, 32];
var temp = 0;
for (var i = 0; i < arr.length - 1; i++) {//外层虚幻:趟数
for (var j = 0; j <= arr.length - i - 1; j++)//交换次数
{
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);
</script>
九、作用域
定义:代码名字在某个范围内起作用,目的是提高可靠性,减少命明冲突。