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. Laravel 更新数据时在表单请求验证中排除自己,检查指定字段唯一性

    原文地址:https://moell.cn/article/24 不错的laravel网站 需求场景 修改用户信息时,在表单请求验证中排除当前邮箱所在的记录行,并检查邮箱的唯一性. Laravel版本 ...

  2. Weka里如何将arff文件或csv文件批量导入MySQL数据库(六)

    这里不多说,直接上干货! 前提博客是 Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(四) 1.将arff文件批量导入MySQL数据库 我在这里,arff文件以Weka安 ...

  3. 使用ADO.NET访问、查询和操作数据库

    ADO.ENT的主要组件 提供两个组件,用来访问和处理数据:.NET Framework 数据程序和DataSet(数据集) .NET Framework:是专门为数据处理及快速地只进,只读访问数据而 ...

  4. bzoj1679

    题解: 前缀和 显然需要排序一下 注意爆int这件事 代码: #include<bits/stdc++.h> using namespace std; typedef long long ...

  5. OO第一阶段总(休)结(养)分(生)析(息)

    第一次作业: 这是一次让我认识到ddl面前潜力真的可以无限大的作业. 一直以为OO是一门和数据结构一样先用几周的时间讲讲Java然后写写”Hello World”小程序再开始讲正课的我(我也不知道为什 ...

  6. Web API之路由浅谈

    Web API的路由,是指明接口地址的方向,是照亮获取数据路上的灯塔,其重要性不言而喻. 本篇文章以vs2015为例,一步步说明路由的创建及使用,其中包括默认路由.自定义路由和特性路由. 一.默认路由 ...

  7. linux文件查看

    查看目录 #查看文件 使用  ls  命令,加上参数 -l 表示查看详细信息,-a 表示查看包含隐藏文件在内的文件.也可使用通配符,*代表任意个字符,? 表示单个字符. $ ls ch*.doc #表 ...

  8. page指令import属性实例

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  9. linux安装jdk、tomcat、maven、mysql

    安装SZ rz与Gcc 首先需要tomcat的jar包,打算rz上去,发现没有安装 ./configure的时候发现缺少gcc和cc 安装解决: 再次执行成功安装了sz和rz 创建软链接然后就可以使用 ...

  10. idea自动生成serialVersionUID(转)

    原文链接:http://blog.sina.com.cn/s/blog_54b09dc90101d9bu.html Setting->Plugins 找到一个叫  GenerateSerialV ...