计算数组的极值
function smallest(array){
return Math.min.apply(Math, array);
}
function largest(array){
return Math.max.apply(Math, array);
}
smallest([0, 1, 2.2, 3.3]); // 0
largest([0, 1, 2.2, 3.3]); // 3.3
迭代arguments
function useCall() {
[].forEach.call(arguments, function(val, key) {
console.log(key, val)
});
}
useCall('Bob Dylan', 'Bob Marley', 'Steve Vai');
//0 "Bob Dylan"
//1 "Bob Marley"
//2 "Steve Vai"
将arguments转为数组
function transformToArray(arg){
return Array.prototype.slice.call(arg);
}
Array.prototype.forEach()第二个参数
参考:MDN
var coder = {
name: 'Shock',
friends: ['Rocky', 'Bob'],
logHiToFriends:function(){
'use static'
this.friends.forEach(function(friend){
console.log(this.name+ ' say hi to '+ friend);
},this)//注意这个this,如果不添加这个参数,你可以猜测会发生什么
}
}
随机生成字母和数字组合的字符串
Math.random().toString(36).substr(2);
//un80usvvsgcpi0rffskf39pb9
//02aoe605zgg5xqup6fdclnb3xr
//ydzr1swdxjg3yolkb95p14i
使用IIFE解决循环问题
unexpected:
var funcs = [];
for (var i = 0; i < 10; i++) {
funcs.push(function() { console.log(i); });
}
funcs.forEach(function(func) {
func(); // 输出数值 "10" 十次
});
expected:
var funcs = [];
for (var i = 0; i < 10; i++) {
funcs.push((function(value) {
return function() {
console.log(value);
}
}(i)));
}
funcs.forEach(function(func) {
func(); // 从 0 到 9 依次输出
});
使用let解决循环问题
这是let
独有的特性(参考)
var funcs = [];
for (let i = 0; i < 10; i++) {
funcs.push(function() {
console.log(i);
});
}
funcs.forEach(function(func) {
func(); // 从 0 到 9 依次输出
})
判断两个小数是否相等
//因为javascript数字通常被输入为十进制的浮点数,但内部却被表示为二进制,所以计算结果会有偏差:
0.1 + 0.2 //0.30000000000000004
0.1 + 1 - 1 //0.10000000000000009
0.1 + 0.2 === 0.3 //false
//所以我们不应该直接比较非整数,而是取其上限,把误差计算进去
//这样一个上限称为 machine epsilon,双精度的标准epsilon值是2^-53
const EPSILON = Math.pow(2, -53); //1.1102230246251565e-16
function epsEqu(x,y) {
return Math.abs(x - y) < EPSILON;
}
epsEqu(0.1+0.2, 0.3) //true
Math.round函数的坑
Math.round(-3.2) //-3
Math.round(-3.5) //-3(这个就奇怪了)
Math.round(-3.8) //-4
//其实,Math.round(x)等同于:
Math.floor(x + 0.5)
巧用||和&&
var bar = $ || 233;
//如果$存在,则把$赋值给bar;如果$不存在,则把233赋值给bar
$ === undefined && (window.$ = jQuery);
//如果$不存在,则把jQuery赋值给window.$;如果$存在,则不执行后面的表达式
使用break + labels退出循环
function findNumber(arr){
loop:{
for (var i = 0; i < arr.length; i++) {
if(arr[i]%2 == 0){
break loop;//表示退出loop区块
}
}
console.log(arr);//这句代码是不会执行的,如果上面只是break,for循环之后的代码还是会执行
}
}
findNumber([1,3,5,6]);
简单实现合并对象
function merge(root){
for (var i = 1; i < arguments.length; i++) {
for (var key in arguments[i]) {
if (object.hasOwnProperty(key)) {
root[key] = arguments[i][key];
}
}
}
return root;
}
var merged = merge(
{name:'Shock'},
{city:'Shenzhen'}
)//{name:'Shock',city:'Shenzhen'}
理解map和parseInt
['1','2','3'].map(parseInt);
//[1, NaN, NaN]
['1','2','3'].map(function(x){return parseInt(x,10)});
//[1, 2, 3]
上传图片预览功能
<input type="file" name="file" onchange="showPreview(this)" />
<img id="portrait" src="" width="70" height="75">
function showPreview(source) {
var file = source.files[0];
if(window.FileReader) {
var fr = new FileReader();
fr.onloadend = function(e) {
document.getElementById("portrait").src = e.target.result;
};
fr.readAsDataURL(file);
}
}
微信内部修改document.title
function setTitle(title) {
document.title = title;
if (/ip(hone|od|ad)/i.test(navigator.userAgent)) {
var i = document.createElement('iframe');
i.src = '/favicon.ico';
i.style.display = 'none';
i.onload = function() {
setTimeout(function(){
i.remove();
}, 9)
}
document.body.appendChild(i);
}
}
setTitle("要修改的标题");
快速克隆一个对象
var Rocker = function(name, age){
this.name = name,
this.age = age
}
var shock = new Rocker('Shock', 24);
shock.age = 99;
var cloneShock = Object.create(shock);
cloneShock.name // "Shock"
cloneShock.age // 99
//在不支持ES5的浏览器下,实现create方法如下:
Object.create = Object.create || function(obj){
var F = function(){};
F.prototype = obj;
return new F();
}
判断一个值是否是对象
function isObject(value){
return value === Object(value);
}
isObject({}); // true
isObject(123); // false
为构造器模拟apply功能
if(!Function.prototype.construct){
Function.prototype.construct = function(argArray){
if(!Array.isArray(argArray)){
throw new TypeError("Arguments must be an array");
}
var constr = this;
var nullaryFunc = Function.prototype.bind.apply(
constr,[null].concat(argArray));
return new nullaryFunc();
}
}
//使用:
Date.construct([2017, 02, 14]); // Tue Mar 14 2017 00:00:00 GMT+0800 (CST)
相关推荐
"javascript技巧精心收集"这个主题包含了一系列关于JavaScript编程的实用技巧和资源,旨在帮助开发者提升技能和效率。以下是一些从提供的文件名中提炼出的关键知识点: 1. **jsp技巧.txt**:这可能涉及到JavaServer...
这个名为"JavaScript技巧200多个"的资源显然包含了大量实用的编程技巧,可以帮助开发者提升JavaScript编程效率和代码质量。以下是一些可能包含在JS技巧200个.txt文件中的关键知识点: 1. **变量声明与作用域**:...
### JavaScript技巧(珍藏版) 在本篇珍藏已久的JavaScript技巧分享中,我们将深入探讨一些实用且高效的JavaScript小技巧,这些技巧旨在帮助新手快速提升编程技能,并为日常开发带来便利。 #### 技巧1:类型转换 在...
以下是你需要了解的7个JavaScript技巧: 1. **简洁写法创建对象和数组**: 在JavaScript中,创建对象的传统方式是使用`new Object()`并逐个添加属性,而简洁写法允许你直接使用大括号 `{}` 来定义对象,如`var car...
根据提供的文件信息,我们可以归纳总结出40种网站常用的JavaScript技巧中的部分知识点。这些技巧主要应用于网页开发中,用于增强用户体验、实现特定功能或优化页面性能。下面将详细阐述每一点涉及的技术细节。 ### ...
本文将围绕“40种JavaScript技巧大全”这一主题,深入探讨JavaScript的一些核心技巧,帮助开发者提升技能水平。 1. **变量与数据类型**:理解JavaScript中的var、let和const关键字,以及它们在作用域和变量提升上的...
### JavaScript技巧与方法详解 #### 引言 在IT领域,JavaScript作为一种被广泛使用的脚本语言,其在网页开发中的地位不可撼动。无论是前端开发还是后端Node.js的应用,JavaScript都扮演着至关重要的角色。本文旨在...
### JavaScript技巧详解 #### 一、JavaScript控制页面控件隐藏与显示 在Web开发中,经常需要通过JavaScript来控制页面上元素的隐藏与显示。这不仅能够提高用户体验,还能够帮助开发者实现更复杂的动态效果。 **...
"百例JavaScript技巧"这个主题覆盖了各种实用的JavaScript编程技巧,旨在帮助开发者提升技能,提高工作效率。以下是根据这个主题可能会涵盖的一些关键知识点: 1. **基础语法**:JavaScript的基础包括变量声明(var...
JavaScript技巧之如何实现鼠标跟随文字.pdf 本文将详细介绍如何使用JavaScript实现鼠标跟随文字的效果,该效果可以在网页上显示一行文本,并跟随鼠标的移动。 标题解释 "JavaScript技巧之如何实现鼠标跟随文字"是...
在"很炫的哦"这个标签下,我们可以期待一些创新且引人入胜的JavaScript技巧。下面,我们将深入探讨一些JavaScript的核心知识点,以及如何利用这些技巧提升你的编程技能。 1. **DOM操作**:JavaScript与HTML文档对象...
【JavaScript 技巧收集(200 多个)】是...以上是JavaScript技巧收集的一部分,它们展示了JavaScript在网页交互、样式控制和用户体验提升方面的强大能力。掌握这些技巧可以帮助开发者创建更富于互动性和吸引力的Web应用。
这个"JavaScript技巧收集.7z"压缩包很可能是包含了一系列关于JavaScript编程的实用技巧、代码片段或者示例项目。尽管没有具体的标签提供额外信息,我们可以从常见的JavaScript知识点出发,来探讨一些重要的概念和...
javascript技巧(javascript调用C#方法) 个人笔记
JavaScript Array对象详解_javascript技巧
Javascript技巧大集合时间.htm ) Javascript技巧大集合时间.htm ) Javascript技巧大集合时间.htm )
### JavaScript技巧概览 本文将深入探讨《18个JavaScript技巧:编写简洁高效的代码》PDF文档中提及的一些关键技巧,并详细解释每个技巧的实际应用及背后原理。这些技巧旨在帮助开发者提高代码质量和效率。 #### 1....