js高级 typeof underfind与null的区别 什么保存在栈空间什么保存在堆空间 内存、数据、变量的关系 变量值保存问题 和简单的笔记

news/2024/7/11 1:53:16 标签: javascript, 前端, es6

typeof判断数据类型

但是他所返回的事字符串

可以区别:数值、字符串、布尔值、undefined、function;
不能区别:null与object、一般object与array

javascript"><!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    const a=function(){
        return"我是a"
    }
    console.log(typeof a );
</script>

在这里插入图片描述

underfind与null的区别

undefined代表定义未赋值;null定义并赋值

javascript"><script>
 console.log("a是"+a);
 const b=null
 console.log("b是"+b);
</script>

在这里插入图片描述
在这里插入图片描述
为什么要用null

var a = null // a将指向一个对象,但对象此时还没有确定
a = null // 让a指向的对象成为垃圾对象
在这里插入图片描述

什么保存在栈空间什么保存在堆空间

在这里插入图片描述

在这里插入图片描述

也就是用于取到内存里面的标志存在栈空间 存入内存的数据存在对空间

一个变量对应一块小内存,变量名用来查找对应的内存,变量值就是内存中保存的内容。

我理解就是定义的变量名在栈空间 定义的变量值在堆空间
在这里插入图片描述

内存、数据、变量的关系。

内存是一个容器,用来存储程序运行需要操作的数据(内存是用来存储数据的空间)。

变量是内存的标识,我们通过变量找到对应的内存,进而操作(读/写)内存中的数据。

指向

javascript"><script>
 const b="你好"
 const a=b
 console.log(a);
</script>

这里a=b是把b保存的对象的地址值复制给b

javascript"><script>
const a=1
const a=function(){}
const a="holle"
</script>

const a=1 当a=的是一个基本数据,保存的就是这个数据。
const a=function(){} 当a=的是一个对象,保存的是对象的地址值。
const a=“holle” 当a=的是一个变量,保存的xxx的内存内容(保存的可能是基本数据,也可能是地址值数据)。


http://www.niftyadmin.cn/n/1371686.html

相关文章

js高级引用变量赋值问题 变量和参数混淆 内存的读和写 数据传递 内存管理 对象 函数

引用变量赋值问题 2个引用变量指向同一个对象&#xff08;保存的内容是同一个对象的地址值&#xff09;&#xff0c;通过一个引用变量修改对象内部数据&#xff0c;另一个引用变量也看得见&#xff08;看见的是修改之后的数据&#xff09;。 2个引用变量指向同一个对象&#xf…

js高级 回调函数 IIFE

推荐 网易云课堂上 IT技术老兵的课 通俗易懂 每个知识点都讲得非常清楚 回调函数 IIFE&#xff08;也叫立即执行函数表达式&#xff09; 用这种方式写函数函数之后执行一次&#xff0c;执行以后就会销毁掉 如果定义一个a4这种4就会一直存储在内存空间中 <script> (func…

js高级函数中的this

函数中的this是一个引用变量&#xff0c;那个实例对象调用的函数&#xff0c;this就指向这个实例 <script>function fun(name) {//添加一个name属性让name属性等于传过来的name参数this.name namethis.setname function (name) {this.name name}}fun("tom"…

js高级 原型对象 显性原型对象与隐性原型对象 原型链

原型对象&#xff0c;是用来解决构造函数在创建实例的时候&#xff0c;防止重复执行所导致的性能的降低(这里主要指占用内存)&#xff0c;来为服用带来方便 如果在构造函数上添加一个方法 当你每次调用这个构造函数的时候都会调用里面的方法如果用原型对象的话就不用反复调用 每…

函数原型实例关系图

总的来说就是这样 关于Function 1.所有的函数都是Function的实例对象 也就是说所有的 函数.protoFunction.prototype 关于object 1.所有的函数的原型对象都是object实例对象 &#xff08;但Object不满足&#xff09; 也就是说 函数.prototype.protoobject.prototype&#xff…

原型属性 instanceof

原型属性 1.查找对象的属性时&#xff0c;会自动到原型链中查找 2.设置对象的属性时不会查找原型链&#xff0c;如果当先对象没有此属性&#xff0c;直接添加此属性并设置其值 3.方法一般定义到原型两种属性一般通过构造函数定义再对象本身上 就是当在构造函数中定义一个方法时…

变量提升与函数提升 执行上下文

当函数或者js执行时会进行预处理操作 变量提升 预处理时候会进行变量的预处理也就是变量的提升&#xff0c;就是把变量提取出来赋值为underfind 函数提升 预处理时会把函数执行&#xff08;函数提升&#xff09; this指向window 块级变量优先于全局变量 当执行函数时也…

执行上下文栈 执行上下文栈面试题

执行上下文栈 <script> let a; function fun(a){this.aafunction fun2(){console.log("我是fun2");} }a10 fun(10) console.log(a); </script>进行预处理的时候会预处理函数&#xff0c;函数里面定义了b&#xff0c;但函数预处理和window预处理一样会把…