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面试知识点与开发技巧汇总的更多相关文章

  1. 由浅入深,66条JavaScript面试知识点

    前言 我只想面个CV工程师,面试官偏偏让我挑战造火箭工程师,加上今年这个情况更是前后两男,但再难苟且的生活还要继续,饭碗还是要继续找的.在最近的面试中我一直在总结,每次面试回来也都会复盘,下面是我这几 ...

  2. 移动平台WEB前端开发技巧汇总(转)

    最近我很关注移动前端的知识,但做为一个UI设计师和web前端工作人员没有这个工作环境接触,做为门外汉,网上系统的知识也了了,一直有种雾里看花的感觉,见到本文,我自己是奉为经典.所以我分享之后又专门打笔 ...

  3. javascript的10个开发技巧

    总结10个提高开发效率的JavaScript开发技巧. 1.生成随机的uid. const genUid = () => { var length = 20; var soupLength = ...

  4. 移动平台WEB前端开发技巧汇总

    原文 :http://uecss.com/mobile-platform-web-front-end-development-skills-summary.html 开发者们都知道在高端智能手机系统中 ...

  5. 移动webAPP前端开发技巧汇总

    1. viewport:webapp视图 也就是可视区域.对于桌面浏览器,我们都很清楚viewport是什么,就是除去了所有工具栏.状态栏.滚动条等等之后用于看网页的区域,这是真正有效的区域.由于移动 ...

  6. (转载)移动Web开发技巧汇总

    META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题" ...

  7. 移动Web开发技巧汇总(转)

    META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题" ...

  8. 移动webAPP前端开发技巧汇总2

    一.关于单位的使用 可能在传统的PC端来说,1px=1px的比例.而在移动端却不是这样,1px = ?. 因为出现了一个像素密度这样个东西,就不能在移动端使用“PX”这个单位.可能在你的大屏手机是1p ...

  9. 前端开发 JavaScript 干货知识点汇总

    很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...

随机推荐

  1. 尚学堂java 参考答案 第八章

    一.选择题 1.BD 解析:B:Integer是对象,所以默认的应该是null对象.D使用的是自动装箱 2.A 解析:String类的对象是final型,是不能修改的,concat()方法是生成一个新 ...

  2. spoj220

    题解: 后缀数组 把所有串连接起来 二分答案 代码: #include<cstdio> #include<cstring> #include<algorithm> ...

  3. eclipse package视图和navigator视图的区别

    package视图是适合开发的视图,因为开发时我们只关注源文件,并不关注编译后的二进制文,所有在该视图中存放二进制文件的classes文件被隐藏了,而navigator视图,就是项目在工作空间中存放的 ...

  4. Android : 基于alsa库的音乐播放

    继上篇:Android : alsa-lib 移植 ,这篇随笔实现一个demo基于移植好的alsa库在Android平台上播放wav文件: 一.利用ffmeg将一个mp3文件转换成wav文件: (1) ...

  5. powerdesigner 使用

    1. 首先要确保机器安装了MySql的ODBC驱动,去http://dev.mysql.com/downloads/connector/odbc/5.1.html 下载 Connector/ODBC ...

  6. 《十天学会单片机和C语言编程》

    <十天学会单片机和C语言编程> 大家注意了这个文件只有最新版迅雷可以下载,下面的lesson几就是第几课.点击右键使用迅雷下载. ed2k://|file|[十天学会单片机和C语言编程]. ...

  7. UGUI动态绑定事件

    using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine. ...

  8. mvc Model验证总结及常用正则表达式

    本文属转载,来源: http://www.byywee.com/page/M0/S868/868615.html 关于Model验证官方资料: http://msdn.microsoft.com/zh ...

  9. LINQ(数据库操作增、删、改及并发管理)

    本文将演示如何通过 Entity Framework 数据模型创建.修改.删除数据库记录. Customer cust = new Customer() { CustomerID = "LA ...

  10. mybatis-generator没有自动生成代码和Junit测试controller

    本来mybatis的generator想要自动生成增删改的,但是到后来语句就两个select,原因是数据中没有给字段加primary,就不会有删改增. 以及Controller的Junit测试 先导入 ...