javascript基础知识(三)

本文深入浅出地讲解了JavaScript中的函数定义、调用、参数传递、返回值、作用域、函数表达式与立即执行函数。同时,探讨了对象的声明、属性与方法、遍历、内置对象,以及栈与堆的区别。适合初学者理解JavaScript核心概念。
摘要由CSDN通过智能技术生成

一、函数

1、函数

1、函数的定义

function 函数名(){
      函数体
    }

2、函数的调用

函数名()

 2、带参函数

function 函数名(形参1,形参2){
      函数体
    }
函数名(实参)

//求累加和
    function getLj(start, end) {
      let sum = 0
      for (let i = start; i <= end; i++) {
        sum += i
      }
      document.write(sum)
    }
    getLj(1, 10)


//逻辑中断
    function ljzd(x, y) {
      x = x || 0
      y = y || 0
      document.write(x + y)
    }
    ljzd()

3、return返回值

函数的返回值为return,如果没有写return,函数默认会返回一个undefined,return后面的代码不会再继续执行,return代表函数终止,函数return只能返回一个值

//返回一个数组中的最大值
    function getMax(arr1) {
      let max = arr1[0]
      for (let i = 1; i < arr1.length; i++) {
        if (max < arr1[i]) {
          max = arr1[i]
        }
      }
      return max
    }
    let maxplus = getMax([1, 5, 7, 3, 4, 8, 18])
    document.write(maxplus)

函数返回多个值,可以使用数组的方式

//求一个数组的最大值和最小值
    function getMaxMin(arr) {
      //声明一个最大值与最小值的变量
      let max = arr[0]
      let min = arr[0]
      // 遍历数组
      for (let i = 1; i < arr.length; i++) {
        max < arr[i] ? max = arr[i] : max
        min > arr[i] ? min = arr[i] : min
      }
      return [max, min]
    }
    let value = getMaxMin([199, 4, 7, 54, 33, 2])
    document.write(`数组的最大值为${value[0]},数组的最小值为${value[1]}`)

4、作用域

作用域:可用性的代码范围 增强了程序的可靠性,减少了名字冲突

  1. 全局作用域

    在全局整个页面中都有效果

  2. 局部作用域

    只在一段代码中有效,作用域函数内部

  3. 块级作用域

    由{}包括,if语句,for语句

变量的作用域

  1. 全局变量:全局变量在任何区域都可以访问和修改

  2. 局部变量:只能在当前函数内部访问和修改

  3. 块级变量:只能在块作用域里访问,不能跨块访问,也不能跨函数访问

函数内部的形参可以看做局部变量

5、作用域链

根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链

采取就

6、匿名函数

将匿名函数赋值给一个变量,并且通过变量名称进行调用,我们将这个称为函数表达式

近原则的方式来查找变量最终的值

let fn=function(){
      函数体
    }
fn()

7、立即执行函数

立即执行,无需调用,多个立即执行函数之间需要用;隔开,防止变量污染

(function () {
      console.log('hhhh');
    })()

二、对象

对象也是一种数据类型,可以理解为一种无序的集合,用来,描述某个事物

1、声明对象

let 对象名={}

对象由属性和方法组成,属性都是成对出现的,对象的属性没有顺序,属性与值之间使用冒号隔开,多个属性使用逗号隔开,最后一个不需要加逗号

2、属性:信息或特征    方法:功能或行为

let 对象名={
   属性名:属性值,
   方法名:函数
  }

3、访问属性与方法

对象.属性名
对象['属性名']
对象.方法名()

let person = {
      name: 'aaa',
      age: 18,
      sex: '男',
      say: function () {
        document.write('hello')
      }
    }
    console.log(person);
    console.log(person.age);
    console.log(person.say());

2、对象操作

1、修改

对象.属性=新值

let obj = {
      uname: 'xiaozhang',
      age: 18
    }
    obj.age = 87
    console.log(obj);

2、新增属性与方法

可以动态的添加属性

对象.新属性=新值

obj.sex = '男'
obj.sing = function () {
      console.log('hello');
    }

3、遍历对象

对象里面是无序的键值对,没有规律,使用for in语句遍历

for(let k in 对象){}

for (let k in obj) {
      console.log(k); //属性名
      console.log(obj[k]);//属性值
    }

4、内置对象

js内部提供的对象,包含各种属性和方法给开发者调用

内置对象Math

- random:生成0-1之间的随机数
- ceil:向上取整
- floor:向下取整
- max:找最大数
- min:找最小数
- pow:幂运算
- abs:绝对值

//随机点名案例
    let arr = ['zy', 'hz', 'gy', 'zf', 'mc', 'lb', 'cc']
    function getRand(min, max) {
      return Math.floor(Math.random() * (max - min + 1))
    }
    let random = getRand(0, arr.length - 1)
    document.write(arr[random])
    arr.splice(random, 1)
    console.log(arr);
//猜数字案例
    function getRand(min, max) {
      return Math.floor(Math.random() * (max - min + 1))
    }
    let rad = getRand(1, 10)
    while (true) {
      let num = +prompt('请您输入一个数字:')
      if (num > rad) {
        alert('对不起,您猜大了')
      } else if (num < rad) {
        alert('对不起,您猜小了')
      } else {
        alert('恭喜,猜对了')
        break
      }
    }

三、堆和栈

栈(stack): 由操作系统自动分配内存空间,自动释放,存储的是基础变量以及一些对象的引用变量,占据固定大小的空间。
堆(heap): 由操作系统动态分配的内存,大小不定也不会自动释放,一般由程序员分配释放,也可由垃圾回收机制回收。

栈:后进先出

`forEach()` 被调用时,不会改变原数组,也就是调用它的数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值