| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 前端实习面试记录 2021年9月30日 -> 正文阅读 |
|
[JavaScript知识库]前端实习面试记录 2021年9月30日 |
作者:recommend-item-box type_blog clearfix |
? ? ? ?先是笔试,笔试主要是一些较为简单的代码解释输出。最后两道大题,第一道是要写出一个求和的函数,第二道是编写一个函数让其对输入的数组进行判断,若该数组中有两个数相加等于给定的另一个数,则将这个两个数的索引进行输出。twoSum([2,7,4,5,6],9) 面试时主要聊到了: 闭包: 1.变量作用域 要理解闭包,首先要理解变量JavaScript的特殊的变量的作用域。 变量的作用域有两种:全局变量和局部变量。 JavaScript的特别之处就在于:函数内部可以直接读取全局变量,但是函数外部无法读取函数内部的局部变量。 注意点:在函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明的是一个全局变量! 2.如何从外部读取函数内部的局部变量? 那就是在函数内部,再定义一个函数。
在上面的代码中,函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,内部的局部变量,对f1就是不可见的。? 这就是JavaScript语言特有的“链式作用域结构”(chain scope),子对象会一级一级地向上寻求所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,我们就可以在f1的外部读取它的内部变量了!!! 3.闭包的概念 上面代码的f2函数,就是闭包。个人理解:闭包就是能够读取其他函数内部变量的函数。 由于在JavaScript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数”。所以,在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 4.闭包的用途 闭包最大的用途有两个:1.可以读取函数内部的变量,2.让这些变量的值始终保持在内存中,不会再f1调用后被自动清除。 为啥会如此呢?因为f1是f2的父函数,f2被赋予了一个全局变量,所以f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制回收。 5.使用闭包的注意点 ? (1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄漏。解决方法是,在退出函数之前,将不使用的局部变量全部删除。 ? ? ?(2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当做对象(object)使用,把闭包当做它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这是一定要小心,不要随便改变父函数内部变量的值。 数据绑定 1.数据双向绑定 (1)什么是数据双向绑定? ? ? ?vue是一个mvvm框架,即数据双向绑定,即当数据发生变化的时候,视图也就发生变化,当视图发生变化的时候,数据也会跟着同步变化。值得注意的是:我们说的数据双向绑定,一定是对于UI控件来说的,非UI控件不会涉及到数据双向绑定。单向数据绑定是使用状态管理工具(如redux)的前提。如果我们使用vuex,那么数据流也是单向的,这时就会和双向数据绑定有冲突。 (2)为什么要实现数据双向绑定? ?在vue中,如果使用vuex,实际上数据还是单向的,之所以说是数据双向绑定,这是用的UI控件来说,对于我们处理表单,vue的双向数据绑定用起来就特别舒服了。 即两者并不互斥,在全局性数据流使用单项,方便追踪;局部性数据流使用双向,简单易操作。 2.单向数据流 数据流,表明的是数据流向,单向数据流式我们的数据单一方向传输。对于Vue来说,组件之间的数据传递具有单向数据流这样的特性。对于父子组件来说,父组件总是通过props向子组件传递数据。所有的prop都使得其父子prop之间形成了一个单向下行绑定:父级prop的更新会向下流动到子组件中,但是反过来则不行。这样能防止子组件意外改变父组件的状态,从而导致应用的数据流向难以理解。另,每次父级组件发生更新时,子组件中所有的prop都将会刷新为最新的值。这意味着你不应该在一个子组件内部改变prop。如果你这样做了,Vue会在浏览器的控制台中发出警告。 注意在JavaScript中对象和数组是通过引用传入的,所以对于一个数组或对象类型的prop来说,在子组件中改变这个对象或数组本身将会影响到父组件的状态。 3.单向数据流与双向数据绑定的联系与区别 对于非UI控件来说,不存在双向,只有单向。只有UI控件才有双向的问题。单向绑定使得数据流也是单向的,对于复杂应用来说这是实施统一的状态管理(如Vuex)的前提。双向绑定在一些需要实时反应用户输入的场合会非常方便(比如表单提交)。但通常认为复杂应用中这种便利比不上引入状态管理带来的优势。 单向数据流和双向数据绑定有什么优缺点? 单向数据流优缺点: 优点: (1)所有状态的改变可记录、可跟踪,源头易追溯; ? (2)所有数据只有一份,组件数据只有唯一的入口和出口,使得程序更直观更容易理解,有利于应用的可维护性。 (3)一旦数据变化,就去更新页面(data-页面),但是没有(页面-data); (4)如果用户在页面上做了变动,那么就手动收集起来(双向是自动),合并到原有的数据中。 缺点: (1)HTML代码渲染完成,无法改变,有新数据,就必须把旧HTML代码去掉,整合新数据和模版重新渲染; (2)代码量上升,数据流转过程变长,出现很多类似的样板代码; (3)同时由于对应用状态独立管理的严格要求(单一的全局store),在处理局部状态较多的场景时(如用户输入交互较多的“富表单型”应用),会显得啰嗦及繁琐。 双向数据绑定的优缺点: 优点: (1)用户在视图上的修改会自动同步到数据模型中去,数据模型中值的变化也会立刻同步到视图中去。 (2)无需进行和单向数据绑定的哪些相关操作; (3)在表单交互较多的场景下,会简化大量业务无关的代码。 缺点: (1)无法追踪局部状态的变化 (2)“暗箱操作”,增加了出错时debug的难度; (3)由于组件数据变化来源入口变得可能不止一个,数据流转方向易紊乱。 原文链接地址:详解单向数据流与双向数据绑定_张印的博客-CSDN博客_单向数据流和双向数据绑定 JS中的数据类型 6 种数据类型:
3 种对象类型:
2 个不包含任何值的数据类型:
python数据类型:
ES6中新增了Symbol。这种类型的对象永不相等,即使创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。 谷歌67版本中还出现了一种bigInt。是指安全存储、操作大整数。 AJAX AJAX=异步 JavaScript和XML AJAX是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 传统的网页(不适用AJAX)如果需要更新内容,必须重载整个网页。 ? |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 20:51:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |