前端百题斩【002】——js中6种变量声明方式
2023-09-27 14:25:56 时间
随着js的发展 目前共6种声明变量的方式 分别为var、let、const、function、class、import 下面分别阐述一下这六种方式。
在ES5阶段 用var定义变量 此阶段具有以下特点
没有块的概念 可以跨块访问 不能跨函数访问// 代码没报错 而是打印出来了undefined 侧面说明了val变量存在变量提升 console.log(val); // undefined var val console.log(val); // 12 let
在ES6阶段 出现了块的概念 新增了块级作用域 同时新增了let命令 let声明的变量具有以下特点
// 实验一——只在所在的代码块有效 let val console.log(val); // 2 let val console.log(val); // ReferenceError: val is not defined
// 实验2——不存在变量提升 暂时性死区 console.log(val); // 报错 let val }
// 实验三——不允许重复声明 let val let val // SyntaxError: Identifier val has already been declared }3 const
在let命令出现的同时 出现了const命令 其用于声明一个只读的常量 具有以下特点
对于上述的验证代码可以用参考let的。
对于const 还有一点比较有意思的指的详细阐述一下 const实际上保证的并不是变量的值不能改动 而是变量指向的那个内存地址不能改动。对于简单类型的数据而言 值就保存在变量指向的内存地址中 因此等同于常量。但对于复合类型的数据而言 变量指向的内存地址保存的只是一个指针 const只能保证这个指针是固定的 至于指向的数据结构不受控制。那么如何保证复合类型的值如何保证呢 可以使用Object.freeze()方法,该方法使对象的原始属性不可变 但仍然可以更改嵌套对象。为了使对象完全不可变 通过将嵌套对象上的所有属性冻结达到效果。
const constantize obj { Object.freeze(obj); Object.keys(obj).forEach( key { if ( typeof obj[key] object ) { constantize( obj[key] ); };1.4 function
function命令用于定义一个函数 具有以下特点
function test() { // …… }5 class
ES6语法引入了class关键字 用来定义类 该写法相比于对象原型的方式具有以下特点
class Calculate { constructor(x, y) { this.x this.y add() { return this.x this.y; }6 import
ES6在语言标准的层面上实现了模块功能 其中import命令就是用于加载模块 然后输出变量 其具有以下特点
// 随便举个例子 import {add} from ./calcluate7 有意思的小问题
下面四种情况分别输出什么 为什么呢 欢迎各位老铁留言
for (let i i i ) { let i abc console.log(i); }情况二
for (var i i i ) { var i abc console.log(i); }情况三
for (let i i i ) { var i abc console.log(i); }情况四
for (var i i i ) { let i abc console.log(i); }
前端开发:JS中关于八皇后算法的使用 在前端开发过程中,关于算法的使用也是非常常见的操作,尤其是处理一些复杂的业务场景,还有就是前端获取到后端返回的复杂结构的数据,所以说前端开发中处处都有算法使用的场景。开发者从接触编程开发开始,就与算法脱不了干系了,算法又和数学分不开,总归到底还是对逻辑思维和数学计算知识的使用。但是大部分开发者没有去深度的针对算法领域去深入,而且有时候太深奥的算法也不常用,往往就忽略了。但是作为程序开发人员,无算法无编程,经典的算法还是要掌握的,本篇博文就来分享一下关于八皇后算法在前端领域的运用,记录一下,方便后期查阅使用。
前端开发:JS中使用到的贪心算法场景 在前端开发过程中,除了一般的逻辑使用之外,也会涉及到算法相关的知识,比如冒泡排序、数组去重/合并、贪心算法、八皇后算法等等,这些都是比较常用的前端算法相关的知识点。关于前端实际开发中用到的算法,虽然没有后端要求的那么多,但是也有比较重要的算法知识,本篇博文就来分享一下关于贪心算法的相关知识点,记录一下,方便查阅使用。
相关文章
- 【Vue/js】Js中执行变量中的命令语句,也就是所谓的宏替换(很实用的例子)
- Js、Jquery获得字符串变量的长度函数实例!
- js函数只执行一次,函数重写,变量控制与闭包三种做法
- 【JavsScript】Ember.js
- js操作css变量
- js函数和变量
- JS的执行上下文,变量声明提升,函数声明提升
- JS——判断变量类型方法汇总
- SwiftUI 前后端完整项目大全 之 网上商店App基于Node.js、Express和Vue构建 (项目含源码)
- JS之变量声明与window对象的关系
- JS高阶---数据、变量、内存
- js变量常量作用域
- js或jQ监测div的高度
- JS包含变量组合定义变量名
- 自己封装的一个js方法用于获取显示的星期和日期时间
- 关于vue中-js使用-css的变量,和css使用js定义的变量
- vue.config.js配置本地测试开发环境变量及获取env中设置的变量
- js 使用sass中的变量
- 用HTML CSS JS 实现一个工作招聘平台展示响应式网站
- 小知识随手记(八):颜色转换、const常量的改动内因、js消息队列、JSON.stringify()的一些特性、多背景图写法、懒加载原理、document.body与document.documentElement区别及使用、移动ios卡顿问题、移位运算符、nextSibling 和nextElementSibling的区别
- js 判断js函数、变量是否存在
- 深入理解js变量提升和函数提升,还怕面试吗?
- Node.js Debugger模块