我是靠谱客的博主 欢呼学姐,最近开发中收集的这篇文章主要介绍javaScript的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

js 中的值传递和引用传递

js 函数传参的时候,如果是基本类型,则按值传递,如果是引用类型,则是引用传递(按地址传递)

var num = 1
function foo(num) {
    num = num + 1
    return num
}
foo(num) // 2
num // 1
function changeAgeImpure(person) {
    person.age = 25;
    return person;
}
var alex = {
    name: "Alex",
    age: 30
};
var changedAlex = changeAgeImpure(alex);
console.log(alex); // { name: 'Alex', age: 25 }
console.log(changedAlex); // { name: 'Alex', age: 25 }
function changeAgeAndReference(person) {
    person.age = 25; // 按址传递,会修改对象
    // 一个新对象,指向另一个内存地址
    person = {
        name: "John",
        age: 50
    };

    return person;
}
var personObj1 = {
    name: "Alex",
    age: 30
};
var personObj2 = changeAgeAndReference(personObj1);
console.log(personObj1); // {name: "Alex", age: 25}
console.log(personObj2); // {name: "John", age: 50}

js 基础类型的属性赋值问题

在 js 中,变量的类型一旦被声明为基础类型,如果再为基础类型的变量添加属性,则其新建的属性不可存储,会自动销毁。
流程如下:

  1. 首先将基础类型临时转换为 Object 类型,并备份好基础类型的值;
  2. 为 Object 类型添加属性;
  3. 属性赋值完成后,再将 Object 转换为基本类型,并恢复为原值,并将临时对象销毁;
let num = 1
let obj = Object(num)
obj.a = 1
Number(obj) // 1
let num = 1
num.name = '123'
console.log(num.name) // undefined
var b = 10;
(function b(b) {
 b.b = 20;
 console.log(b) // 10
})(b)

最后

以上就是欢呼学姐为你收集整理的javaScript的问题的全部内容,希望文章能够帮你解决javaScript的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部