js代码的一些小技巧
1. 数组中通过赋值语句来改变值
var a = 1;
var msg = ["value0","value1"];
for(var i = 0;i<10;i++){
alert(msg[a = a == 1 ? 0 : 1]);// 0,1,0,1…
}
能实现切换两个不同的值。 msg[a=1] 相当于 msg[1], a=1,同时执行赋值和取值
2.类型转换
一般把"123"转成number类型,都是parseInt("123");但是也可以这样:
var a= "123";//string 10
var a1 = parseInt(a,10);//number 10
var a2 = +a;//number 10
var a3 = a*1;//number 10 var a = 0;
alert(!!a);//强制转换为boolean
3. onclick和 href
<a href="go.html" onclick="doSomething();"></a>
如果跳转之前做判断的话,传统的写法:
function doSomething(){
var res = confirm("u want go?");
if (res) {
window.location.href = "go.html";
};
}
dosomething返回的是false,则不会跳转页面,so we can achieve it like this:
function doSomething(){
return confirm("u want live?");
}
4.获取数组中最大最小值
通常,我们给Array做原型拓展,如下:
if(typeof(Array.prototype['max']) == 'undefined'){
Array.prototype.max = function(){
var length = this.length;
if(length){
var max = this[0];
for(var i=0;i<length;i++){
if(this[i] > max){
max = this[i];
}
}
return max;
}else{
// 空数组
}
}
}
alert([2,3,19,223].max());//223
我们知道javascript原生的Math对象提供了比较大小的方法,
alert(Math.max(1,4,2,919,222)); //
同样的 ,我们知道apply方法可以改变this的值,并将参数与数组形式传递,所以可以巧妙的运用:
if(typeof(Array.prototype['max']) == 'undefined'){
Array.prototype.max = function(){
var length = this.length;
if(length){
return Math.max.apply({},this);
}else{
// 空数组
}
}
}
或者
Array.prototype['max'] = Array.prototype['max'] || function(){
var length = this.length;
if(length){
var max = this[0];
for(var i=0;i<length;i++){
if(this[i] > max){
max = this[i];
}
}
return max;
}else{
// 空数组
}
}
5. javascript 检测对象类型
/* 检测对象类型
* @param: obj {JavaScript Object}
* @param: type {String} 以大写开头的 JS 类型名
* @return: {Boolean}
*/
function is(obj, type) {
return Object.prototype.toString.call(obj).slice(8, -1) === type;
}
is('sofish', 'String') // true
is(null, 'Null') // true
is(new Set(), 'Set') // true
6.正则表达式与replace方法
str.replace(/正则/,'替换的内容'|| function(match){/* todo */})
var source = '<tr><td>{$id}</td><td>{$name}</td></tr>';
console.log(source.replace(/{\$id}/g,'10'));
console.log(source.replace(/[<>&]/g,function(items){
switch(items){
case '<' :
return '<';
case '>' :
return '>';
}
}));
7.用js实现随机选取10–100之间的10个数字,存入一个数组,并排序
js代码的一些小技巧的更多相关文章
- 【js】中的小技巧
本文主要介绍一些JS中用到的小技巧 1. 类型强制转换 1.1 string强制转换为数字 可以用*1来转化为数字(实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为 ...
- JS、JQ相关小技巧积攒
JS.JQ相关小技巧积攒,以备不时之需. 1.js 获取时间差:时间戳相减.new Date().getTime() 获得毫秒数,除以(1000*60*60*24) 获得天数. 2.重定向操作:页面 ...
- JS前端下载文本文件小技巧:1、download属性;2、借助Blob转换成二进制下载
一.HTML download 与文件下载 如果希望在前端侧直接触发某些资源的下载,最方便快捷的方法就是使用HTML5原生的download属性,例如: <a href="large. ...
- 泛微关于js设计的一些小技巧
1.关于泛微流程的js设计 泛微oa可以插入javascript可以diy自己想要的表单页面前端功能.如果有前端开发经验,或者熟练使用jQuery的话,这将变得非常容易!同时泛微OA内部有很多库,包括 ...
- angular源码分析:angular中各种常用函数,比较省代码的各种小技巧
angular的工具函数 在angular的API文档中,在最前面就是讲的就是angular的工具函数,下面列出来 angular.bind //用户将函数和对象绑定在一起,返回一个新的函数 angu ...
- 30段极简Python代码:这些小技巧你都Get了么
学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...
- 让你的JS更优雅的小技巧
首先,看一个非常不优雅的例子: 看到这段代码,虽然代码很短,但是一眼看上去就不想再看了,也就是没什么可读性.这段代码,没有封装,随意定义一个变量都是全局变量,这样在多人开发或者是大型开发中,极其容易造 ...
- js 中的一些小技巧
js 数字操作: 1.1 取整: 取整有很多方法如: parseInt(a,10); Math.floor(a); a>>0; ~~a; a|0; 前面2种是经常用到的,后面3中算是比较偏 ...
- 写Java代码的一些小技巧
写Java代码有三年多了,遇到过很多坑,也有一些小小的心得.特地分享出来供各位学习交流.这些技巧主要涉及谷歌Guava工具类的使用.Java 8新特性的使用.DSL风格开发.代码封装等技巧. 一.nu ...
随机推荐
- 初识 istringstream、ostringstream、stringstream 运用
今天编程练习时遇到了istringstream的用法,感觉很实用.后面附题目! C++的输入输出分为三种: (1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O 1.头文件 # ...
- Ubuntu上用快捷键关闭没有响应的程序
Linux 上有很多方法可以强制关闭无响应的程序,比如你可以通过按快捷键 Ctrl + Shift + T 来调出 Terminal 或者用 Ctrl + Shift + F1 进入 Console ...
- BITED-Windows8应用开发学习札记之三:如何在Win8应用中实现数据绑定
在微软官方提供的资源中,我们可以看到SampleDataSource.cs已经拥有了定义好了相应的数据结构以及实现类: 建立本地数据 由于我们已经有数据以及相应的数据类,我们需要做的仅仅是将数据放进数 ...
- noip模拟赛 软件software
地图上的 n个城市,由 n-1条道路连接,且任意两个城市连通.除 1号城市之外的每个都有 一台计算机,安装软件号城市之外的每个都有 一台计算机,安装软件一个 自己的安装时间.住在 1号城市的蒟蒻要给这 ...
- iOS打开手机QQ与指定用户聊天界面
开发中遇到一个联系客服qq的需求,找到这么一个实现方法,先记录下来.大概的原理就是,iOS启动第三方应用是采用schema模式的,这有点像url,打开不同的界面使用不同的地址.但这个url怎么得来的还 ...
- oracle查看相关用户表
select TABLE_NAME from user_tables //当前用户表 select TABLE_NAME from dba_tables //所有用户表+系统表 select TA ...
- 第二百二十五 how can I 坚持
今天感觉好累啊,心累,上班连开两个会.事情乱七八糟,接二连三. 住的这噪音还那么大. 哎. 睡觉吧.
- HDU3874Necklace(树状数组+离线操作)
此题的大意思说有一串珠子,每个珠子都有自己的欣赏值value,现在给你一串珠子每个的欣赏值,并给出一些询问,查询某个区间内部总欣赏值是多少,但是有一个约定就是如果这个区间内部有两个珠子的欣赏值是一样的 ...
- Error opening trace file: No such file or directory (2)
想看sharepreference保存的键值对的数据,用到单元测,运行函数总是报这种错,且看不到file explorer-->data>对应工程包的xml文件:
- OC:Block语法、Block使用、Block实现数组排序
Block //定义一个求两个数最大值函数 int maxValue (int ,int); //函数的实现 int maxValue (int a, int b){ return a > b ...