NTFS权限 私有变量 5G php vuejs2 ros 打印 网络营销推广 arm nuget NEJ 河南普通话考试 jquery绑定click事件 js事件绑定 bentley软件介绍 bootstrap文本框 java二维数组赋值 python开发环境 python学习文档 简单python脚本实例 java数组添加元素 java实现多线程 java时间转时间戳 javalist数组 java的多线程 linux入门 mac地址修改器 hadoop权威指南 计算机操作系统第四版 props microkms 日历制作模板 深入浅出通信原理 java电子书 c语言指数函数 windowsjs延时函数 0000008e qq浏览器手机 mysql索引面试题 python进制转换 情头污系
当前位置: 首页 > 学习教程  > 编程语言

var,let, const区别(面试看这里全套)

2020/11/24 9:32:16 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

var let const的区别 一&#xff09;var声明变量存在变量提升&#xff0c;let和const不存在变量提升 二&#xff09;let、const都是块级局部变量 三&#xff09;同一作用域下let和const不能声明同名变量&#xff0c;而var可以 那么笔试题 for(let i0;i<5;i){setTimeout(f…

var let const的区别

一)var声明变量存在变量提升,let和const不存在变量提升
二)let、const都是块级局部变量
三)同一作用域下let和const不能声明同名变量,而var可以

那么笔试题

for(let i=0;i<5;i++){
      setTimeout(function(){
        console.log(i);
      },0)
    }
    console.log(i);

输出:5 0 1 2 3 4

	for(var i=0;i<5;i++){
      setTimeout(function(){
        console.log(i);
      },0)
    }
    console.log(i);

输出:5 5 5 5 5 5

这里是为什么呢?
其实我们可以把let声明的变量,它的局部定义域理解为闭包,就是把这个变量在函数声明的同时,给到它的父级域里面使它保存下来,我说的可能有点抽象,不对的地方请指正

但其实到这里这三个还是没有结束,因为还有一个特殊的const的作用,正所谓存在即合理,自然有它的特点,

const

这里独特强调一下,因为我认为我准备够充分了,但还是被面试官小姐姐问蒙了,

小姐姐问:const 声明一个变量必须给它赋值吗?

答:必须,不赋值会报错

问:const声明的值能改变吗?

答:不可以,重新赋值会报错

问:那如果给它一个数组或者对象,去修改对象里面的属性或者数组里面的值呢?

答:???还有这操作呢?没用过呀

问:那你回家再看看吧,我们公司不适合你(玩笑话)

然后完了我仔细看了下,原来这基本数据类型和引用数据类型放在栈中是不一样的,基本数据类型会放一个值,而引用数据类型是放的一个地址,这我虽然知道,可我从未这么去想过const,浅薄了,浅薄了,那么这也就迎刃而解了

const声明的变量的值,对引用类型而言放的是一个地址,地址并不会变,但地址所对应的那个数组对象是可以修改的

提到栈,又想到了数组和对象的深浅拷贝的面试题,下次讲解


本文链接:
http://www.dtmao.cc/news_show_400054.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?