javascript 基础(26-50)

1.for 循环语句

语法:

for(初始化表达式;条件表达式;更新表达式){
		语句... ...
}

在执行时先执行初始化表达式(只会执行一次),初始化变量,再执行条件表达式,如果结果为true则执行循环,再循环结束后执行更新表达式,任何依次再次执行条件表达式,直到结果为false则跳出循环
for循环中的三个部分都可以省略不写(容易死循环)


2.break

可以为循环语句创建一个 label ,来标识当前循环

label :循环语句

使用 break 语句时,可用在 break 后跟着一个 label
这样 break 将会结束指定的循环,而不是最近的

例:

for1:
for(var i = 0;i<10;i++) {
    console.log("###"+i);
    for(var j = 0;j<10;j++) {
        console.log("$$$"+j);
        if(j==3){
            break for1;
        }
    }
    console.log("\n");
}

在这里插入图片描述


3.continue

continue 可以跳过当次循环

例:

for(var i = 0;i<5;i++) {
    if(i==2){
        continue;
    }
    console.log("###"+i);
    console.log("\n");
}

在这里插入图片描述

同样 continue 也是默认只会对离他最近的循环起作用
并且也可以对 continue 设置label


4.console.time : 计时器

在测试程序的性能时,可以在程序执行前,开启计时器

console.time("计时器名字")   //可以用来开启一个计时器
... ...
console.timeEnd("计时器名字")   //可以用来停止一个计时器

它需要一个字符串作为参数,这个字符串将会作为计时器的标识


5.函数(function)

函数也是一个对象
函数中可以封装一些 功能(代码),在需要时可以执行这些功能(代码)
函数中可以保存一些代码在需要的时候调用
使用 typeof 检查一个函数对象时,会返回 function

创建一个函数对象

函数对象具有所以普通对象拥有的功能

var fun = new Function("console.log('Hello 这是我的第一个函数');");

封装到函数中的代码不会立即执行
函数中的代码会在函数调用的时候执行
当调用函数时,函数中封装的代码会按顺序执行

调用函数的语法:

函数对象 ( ) 

示例:

var fun = new Function("console.log('Hello 这是我的第一个函数');");
console.log(typeof fun);
for(var i=0;i<2;i++) {
    console.log("这是第"+(i+1)+"次调用");
    fun();
}
fun.gender = "男";
console.log(fun.gender);

在这里插入图片描述

用函数声明来创建一个函数对象

语法:

function 函数名 ([形参1,形参2... ...  ,形参n]){
	语句
}

示例:

function fun1(){
    console.log("这是一个函数");
    for(var i=0;i<3;i++) {
        console.log("i = "+i);
    }
}

for(var i=0;i<3;i++){
    console.log("这是第"+(i+1)+"次调用");  
    fun1();
}

在这里插入图片描述

使用函数表达式来创建一个函数

语法:

var 函数名 = function([形参1,形参2... ...  ,形参n])  {
	语句... ...
}

示例:

var fun1 = function() {
    console.log("这是一个函数");
    for(var i=0;i<3;i++) {
        console.log("i = "+i);
    }
};
for(var i=0;i<3;i++){
    console.log("这是第"+(i+1)+"次调用");  
    fun1();
}

在这里插入图片描述

6.函数的参数

可以在函数的()中来指定一个或多个形参
多个形参之间用逗号隔开,声明形参就相当于在函数内部声明了对应的变量,但是还没赋值

在调用函数时,可以在()指定实参

注意:调用函数时解析器不会检查实参类型
所以,要检查是否可能会接受到非法的参数,如果有可能则需对参数进行类型的检测
函数的实参可以是任意的数据类型

调用函数时,解析器也不会检查实参的数量,多余的实参不会被赋值
如果实参的数量少于形参的数量,则没有对应实参的形参则是 Undefined

例如:

function sum(x,y){
    alert(
    "a = "+x+"\n"+
    "b = "+y+"\n"+
    "a + b ="+(x+y));
}
var a = +prompt("请输入a的值");
var b = +prompt("请输入b的值");
sum(a,b);
sum(100,"hello");

在这里插入图片描述
在这里插入图片描述

实参可以是任意数据类型,也可以是一个对象
当我们参数过多时,可以将参数封装到一个对象中,然后通过对象传递

function fun(o) {
    console.log("我的名字是"+obj.name+",我今年"+obj.age+"岁了,我是一个"+obj.gender+"生,我目前住在"+obj.address);
};

function fun2(a) {
    console.log("a = "+a);
    a(obj);
} 

var obj = {
    name:"牛马",
    age:19,
    gender:"男",
    address:"扬州通达"
};
fun2(fun);

在这里插入图片描述


7.函数的返回值

可以使用 return 来设置函数的返回值
return 后的值将会作为函数的执行结果返回
可以定义一个变量接受该结果,函数的返回值是什么,该变量的值就是什么
如果 return 后面没有跟值或者没有写 return,那么函数的返回值就是 Undefined

注意:在函数中 return 后的语句都不会执行

语法:

return 值;
function sum(a,b,c) {
    return a+b+c;
}

for (var i = 0;i<3;i++){
    var j= sum(i,2*i,3*i);
    console.log("j = "+j);
}

在这里插入图片描述

使用 return 可结束整个函数
例如:

function fun() {
    console.log("函数要开始执行了");
    for(var i=0;i<5;i++){
        console.log("i = "+i);
        if(i==3){
            return i;
        }
    }
    console.log("函数已经执行完了");
}

var a = fun();
console.log("a = "+a);

在这里插入图片描述

函数的返回值可以是一个对象
例如:

function fun() {
    var obj = {
        name:"唐僧",
        age:18,
        gender:"女",
    }
    return obj;
}

var a = fun();
console.log(a.name);

在这里插入图片描述


8.立即执行函数

函数定义完,立即被调用,这函数叫做立即执行函数
立即执行函数往往只会执行一次

例如:

(function(){
    for(var i=0;i<3;i++){
        console.log("我是一个立即执行函数"+i);
    }
})();
console.log("我应该是后面执行的");

在这里插入图片描述

立即函数自调用:

(function(a,b){
        console.log("a = "+a);
        console.log("b = "+b);
})(6,666);

在这里插入图片描述


# 12.作用域 作用域指的是一个变量的作用范围 在JS中有两种作用域 ## 1.全局作用域 直接编写在script标签中的JS代码,都在全局作用域中 全局作用域在我们页面打开时创建,在我们页面关闭时销毁 在我们全局作用域中有一个全局对象 window(代表的是一个浏览器的窗口,它由浏览器创建), 我们可以直接使用 在我们全局作用域中,我们创建的变量都会作为window对象的属性保存 全局作用域中的变量都是全局变量,在我们页面的任意部分都可以访问到
var a = 1;
var b = 2;
console.log(window.a);
console.log(window.b);

创建的函数都会作为window对象的方法保存

function fun(){
    alert("我是fun函数");
}
window.fun();

变量的声明提前

使用var关键字声明的变量,会在所有代码执行之前被声明(但不会赋值)
但是声明变量时不适用var关键字,则变量不会被声明提前

fun();
fun2();
function fun(){
    console.log("我是fun函数");
}
var fun2 = function(){
    console.log("我是fun2函数");
}

在这里插入图片描述

函数的声明提前

使用函数声明形式创建的函数: function() { }
他会在所有的代码执行之前就被创建,所有我们可以在函数声明前来调用函数

使用函数表达式创建的函数,不会被提前声明,所以不能在声明前调用

2.函数作用域(局部作用域)

调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量

当在函数作用域操作一个变量时,他会现在自身作用域中寻找,如果有就直接使用,如果没有则向上一级作用域中寻找,直到找到全局作用域,如果全局作用域中依旧没有找到,则会报错

也可以直接访问全局作用域的a。 例如:console.log("a = "+window.a);

在函数作用域中也有声明提前的特性,使用var关键字声明的变量,会在函数中所有的代码执行前被声明
函数声明也会在函数中的所有代码执行前执行
在函数中不使用var声明的变量都会成为全局变量
定义形参就相当于在函数作用域中用var声明了变量


9.数组(Array)

数组也是一个对象
他和我们普通的对象功能类似,也是用来存一些值的
不同的是普通对象是使用字符串作为属性名
而数组是使用数字索引来操作元素

索引:
从0开始的整数就是索引
数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据

向数组中添加元素
语法:

数组 [ 索引 ] =

读取数组中的元素
语法:

数组 [ 索引 ]
var arr = new Array();
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
console.log(arr);
console.log(arr[1]);

在这里插入图片描述
获取数组长度
语法:

数组.length

对于连续的数组,使用length可以获取到数组的长度(元素个数)
但对于非连续的数组,使用length会获取到数组的最大索引+1
还可以使用length设置数组长度

向数组最后一个位置添加元素

var arr = new Array();
arr[0] = 1;
arr[arr.length] = 2;
arr[arr.length] = 3;
arr[arr.length] = 4;
arr[arr.length] = 5;
arr[arr.length] = 6;
console.log(arr);

在这里插入图片描述
使用构造函数创建数组
使用构造函数创建数组时,也可以同封添加元素,将要添加的元素作文构造函数的参数传递,元素之间使用,隔开

var arr =new Array (10, 20, 30);

//创建一个长度为10的数组
var arr =new Array (10);

使用字面量创建数组
使用字面量创建数组时,可以在创建时就指定数组中的元素

var arr = [1,2,3,4,5,10];

数组中的元素可以是任意类型,包括函数,对象,数组…

arr = [ "he1lo",1,true, null, undefined,obj,[1,2,3],fun(){aleat(1)}];

push()

该方法可以向数组的末尾添加一个或多个元素,并返回敬组的新的长度,可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾

pop()

该方法可以册除数组的最后一个元素,并将被删除的元素作为返回值回

unshift()

向数组开头添加一个或多个元素,并返回新的数组长度
向前边插入元素之后,其他的元素索引会依次调整

shift()

可以删除数组的第一个元素,并将被删除的元素作为返回值返回

var arr = [0];
arr.push("牛马","大牛马","小牛马","巨牛马");
console.log(arr);
console.log(arr.push());

console.log(arr.pop());
console.log(arr);

arr.unshift("特牛马");
console.log(arr);
console.log(arr.unshift());

console.log(arr.shift());
console.log(arr);

在这里插入图片描述


10.数组的遍历

所谓的遍历数组就是把数组中的所有元素都取出来

var arr = [1,2,3,4,5,6,7,8,9,10];
for(var i=0;i<arr.length;i++) {
    console.log(arr[i]);
}

在这里插入图片描述
小练习:
创建Person构造函数的实例,并将这些实例放到一个数组之中
创建一个函数,可以将Person 中age 大于等于18 的Person 提取出来
然后封装到一个新的数组中,并返回

function Person(name,age){
    this.name = name;
    this.age = age;
}
var per1 = new Person("一号",18);
var per2 = new Person("二号",28);
var per3 = new Person("三号",8);
var per4 = new Person("四号",16);
var per5 = new Person("五号",38);
var per6 = new Person("六号",22);
var perArr = [per1,per2,per3,per4,per5,per6];
console.log(perArr);

function get(arr){
    var newArr = [];
    for(var i=0;i<arr.length;i++) {
        if(perArr[i].age>=18){
            newArr.push(perArr[i]);
        }
    }
    return newArr;
}
console.log(get(perArr));

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

O_oregou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值