JavaScript面试知识点与开发技巧汇总
1.bind相关用法
fun.bind(obj)将obj传入fun作为其作用域
fun.bind将返回一个新的函数地址,fun.bind(obj)!=fun.bind(obj)
反复bind只有第一次有效
转载注明http://www.cnblogs.com/billyrun/p/6597250.html
2.js中的真值
0 , “” , null , undefined , false , NaN转为boolean都是false
null == undefined 真
null === undefined 假
0 == "" 真
0 == false 真
false == "" 真
1 == true 真
2 == true 假
2 == false 假
'true' == true 假
3.表达式的使用
if(a>0)
{
b = true
}
else
{
b = false
}
应写为b = a > 0
复杂情况可以使用局部变量或三元表达式
4.闭包与引用传递
1.闭包里传的都是引用(简单类型也是引用!)
2.for()循环内var定义的变量相当于在外面定义了var i = 0
for()循环内应使用let i = 0 , 这样i只在for循环内部可见
3.由于这个闭包的关系,可以看到,是循环完毕之后才返回
var methods = []
for(var i = 0 ; i < 10 ; i++)
{
methods[i] = (function(){
console.log("i =" , i)
return i
})
} methods[0]()
VM1405:5 i = 10
10
i = 100
100
methods[0]()
VM1405:5 i = 100
100
以下代码暴露出for循环内错误使用闭包以及var声明迭代器的严重错误
var methods = []
for(var i = 0 ; i < 10 ; i++)
{
methods[i] = (function(){
console.log("i =" , i)
return i
})
} methods[0]()
VM1196:5 i = 10
10
for(var i = 0 ; i < 10 ; i++)methods[i]()
VM1196:5 i = 0
VM1196:5 i = 1
VM1196:5 i = 2
VM1196:5 i = 3
VM1196:5 i = 4
VM1196:5 i = 5
VM1196:5 i = 6
VM1196:5 i = 7
VM1196:5 i = 8
VM1196:5 i = 9
9
methods[0]()
VM1196:5 i = 10
10
for(var j = 0 ; j < 10 ; j++)methods[j]()
10VM1196:5 i = 10
4.对象深拷贝小技巧
var obj2 = JSON.parse(JSON.stringify(obj1))
5.关联数组长度
var size = Object.keys({a:1}).length //size = 1
6.JavaScript内存管理问题
什么样的数组需要手动回收?(全局引用)
7.bind/call/apply的使用
prototype与__proto__的联系
instanceof与constructor
8.如何判断一个对象的值是否是数字
100 , '100' , 'abc' , null
最佳答案:isNaN()
//注意 NaN == NaN 结果是false
9.JS中的分号问题
console.log('111') //没有加分号
(true && console.log('222')) //且用括号包着导致问题 报错第三句不能执行
console.log('333')
VM73:1 111
VM73:2 222
VM73:2 Uncaught TypeError: console.log(...) is not a function
at <anonymous>:2:1
console.log('111'); //加了分号之后 解决问题
(true && console.log('222'))
console.log('333')
VM74:1 111
VM74:2 222
VM74:3 333
JavaScript面试知识点与开发技巧汇总的更多相关文章
- 由浅入深,66条JavaScript面试知识点
前言 我只想面个CV工程师,面试官偏偏让我挑战造火箭工程师,加上今年这个情况更是前后两男,但再难苟且的生活还要继续,饭碗还是要继续找的.在最近的面试中我一直在总结,每次面试回来也都会复盘,下面是我这几 ...
- 移动平台WEB前端开发技巧汇总(转)
最近我很关注移动前端的知识,但做为一个UI设计师和web前端工作人员没有这个工作环境接触,做为门外汉,网上系统的知识也了了,一直有种雾里看花的感觉,见到本文,我自己是奉为经典.所以我分享之后又专门打笔 ...
- javascript的10个开发技巧
总结10个提高开发效率的JavaScript开发技巧. 1.生成随机的uid. const genUid = () => { var length = 20; var soupLength = ...
- 移动平台WEB前端开发技巧汇总
原文 :http://uecss.com/mobile-platform-web-front-end-development-skills-summary.html 开发者们都知道在高端智能手机系统中 ...
- 移动webAPP前端开发技巧汇总
1. viewport:webapp视图 也就是可视区域.对于桌面浏览器,我们都很清楚viewport是什么,就是除去了所有工具栏.状态栏.滚动条等等之后用于看网页的区域,这是真正有效的区域.由于移动 ...
- (转载)移动Web开发技巧汇总
META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题" ...
- 移动Web开发技巧汇总(转)
META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题" ...
- 移动webAPP前端开发技巧汇总2
一.关于单位的使用 可能在传统的PC端来说,1px=1px的比例.而在移动端却不是这样,1px = ?. 因为出现了一个像素密度这样个东西,就不能在移动端使用“PX”这个单位.可能在你的大屏手机是1p ...
- 前端开发 JavaScript 干货知识点汇总
很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...
随机推荐
- vbox 虚拟机添加usb
先装扩展包. vbox 所在的用户组比如要包括当前用户才行. 查看当前用户名:sharl@sharl-laptop:~$ whoamisharl 查看vbox 所在的组:sharl@sharl-lap ...
- python 转换代码格式
import os dirname="C:\\Users\\haier\\Desktop\\new" def walk(path): for item in os.listdir( ...
- shell脚本学习之参数传递
shell之参数传递 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以 ...
- laravel注册行为的方法和逻辑
public function register() { //验证: $this->validate(\request(), [ 'name' => 'required|min:3|uni ...
- laravel 连表查询数据库
$this->model ->select($field) ->leftJoin('b', 'b.cid', '=', 'a.id') ->orderBy("a.ad ...
- CCF关于对NOIP2018复赛违规处罚的公告
NOIP2018复赛于11月10-11日在全国31个赛区同时举行,现已结束.总体有序,但也有赛区出现违规现象.现将复赛中违规情况进行通报. 一.数据提交情况 CCF要求NOI各省组织单位在考试结束后在 ...
- 最小生成树 Prim算法 和 Kruskal算法,c++描述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- SQL-20 查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth
题目描述 查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growthCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`s ...
- jaxb 组装及解析xml
参考 http://blog.csdn.net/yanan_seachange/article/details/7325708 a.添加依赖 b.建立绑定关系 c.测试 a.添加依赖 <depe ...
- linux自动更新代码,自动备份数据库,打包应用发布
切换root用户 sudo su - 1.安装svn,mysql yum install subversion yum install mysql 2.安装 maven 下载:百度云盘地址为 http ...