JavaScript基础篇中(浅拷贝,函数,全局变量和局部变量)

一.数组 浅拷贝

1.为什么要浅拷贝?
数组之间如果直接拷贝的话,如果想对其中一个数组进行修改的话,会影响另一个数组内值,使两个数组同时改变,所以如果想要达到对其中一个数组的值进行改变,而另一个数组不影响下,我们则使用浅拷贝
2.浅拷贝
定义一个新数组,使用遍历循环,把原数组中的值一个个的加入到新数组中去,此后对新数组的操作不会影响原数组

二.函数

函数是一种数据类型,用typeOf检测,返回值是function
1.函数的命明
(1)函数命名不能跟系统默认的命名一样,会产生冲突
(2)一个页面中,函数命名不能一样,这样后面的容易把前面的给覆盖了
2.函数的创建方式

1:function 函数名(){
  // 函数体
}
2:函数表达式
var fn = function() {
  // 函数体
}
3.函数定义还可以通过Function()构造函数来定义
var f=new Function('x','y','return x+y');
等价于:
var f=function(x,y){
  return x+y;
}

3.函数的调用
(1)调用的语法:
函数名();
(2)函数里面可以调用其他函数
(3)函数可以调用多次
4.函数的形参和实参
(1)形参:形式参数,没有固定的值
(2)实参:实际参数,用户传的参数

  • 注意点
    a.实参既可以是变量也可以是数值
    b.实参和形参的个数可以不一致
    c.如果实参数小于形参数,则会返回NaN
    d.如果一个函数中没有return,则这段函数就没有返回值
    e.如果一个函数没有返回值(没有return),但却被接收了,则显示undefined;
    f.如果一个函数没有明确的返回值(return后面没有值),但却被接收了,则显示undefined;
  • 注意注意:使用return需要知道,return可以结束函数,后面的函数都不会执行
    5.伪数组
    (1)只能在函数里使用
    (2)arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性,也就是说所有函数都内置了一个存储了传递的所有实参.arguments是一个伪数组因此可以进行遍历.
    arguments属性:
arguments.callee
指向当前执行的函数。
arguments.caller 
指向调用当前函数的函数。
arguments.length
指向传递给当前函数的参数数量。
arguments[@@iterator]
返回一个新的Array迭代器对象,该对象包含参数中每个索引的值。
注意:现在在严格模式下,arguments对象已与过往不同。arguments[@@iterator]不再与函数的实际形参之间共享,同时caller属性也被移除。

三.函数分类

1.匿名函数
(1)匿名函数是指没有定义函数名的函数
(2)匿名函数的调用方式
.1:将匿名函数赋值给一个变量,这样就可以通过变量进行调用

 eg: var f2=function (){
             console.log("哈哈");
             }
            f2();

.2.匿名函数的自调用:

eg:(function () {
              alert(123);
              })()

2.递归函数

语法形式:

function fun()
fun();
	}
fun();//这样会无限的调用自己,会导致报错
(如果参数相等死循环)

3.回调函数
函数做参数使用,成为回调函数
function(function(){}){};
因为函数是一种类型,所以可以把函数作为返回从函数内部返回

eg:function fn(b) {
  var a = 10;
  return function () {
    alert(a+b);
  }
}
fn(15)();

四.全局变量和局部变量

1.全局变量是不能被删除的,但是隐式全局变量是可以被删除的
2.隐式全局变量:没有用var声明的变量,但是在外部可以调用.

eg:function f1(){
num=1;
}
console.log(num);

注意点:在函数内部,用var声明的是局部变量,不用var声明的是全局变量
3.作用域和作用域链
(1)全局作用域:全局变量使用的范围
(2)局部作用域:局部变量使用的范围
(3)作用域:
当我们进行变量访问操作时会经历以下步骤:
a.首先在当前作用域中查找变量的声明var
b.如果没有找到,会对父作用域进行查找,如果还没有找到,以此类推
c,如果到全局作用域还没有找到,就会返回undefined
4.预解析
(1)变量声明提升
(2)函数声明提升了—整个函数体提升

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值