javascript 学习小结 JS装逼技巧(一) by FungLeo

javascript 学习小结 JS装逼技巧(一) by FungLeo

前言

最近一直在做javascript方面的工作.但是本身我的javascript水平比较低,因此在学习过程中比较困难.而最近又接触到了很多的知识点.好记性不如烂笔头,因此写这篇零碎的博文,记一记我学到的一些好玩的东西.

简单的新建各种元素

创建各种元素都有相对应的方法,例如,创建一个数组可以这样写var arr = new Array 当然,这样做是对的,但是我英文很烂,并且不喜欢这样的代码.我喜欢的是下面这样的.

// 创建一个数组
var arr = [];
// 创建一个对象
var obj = {};
// 创建一个空字符串
var str = "";

不用记忆一个英文单词,做到了.

用感叹号将非布尔值转化为布尔值

var str = "abc";
console.log(!str);

输出

false

感叹号可以把所有的东西都变成布尔值,如下图所示:

这样我们在进行一些数据判断的时候非常有用,而且代码特别简短.当然,你必须对这些将会转化成什么有了解.

当然,如果你需要将内容转换为相反的,则使用两个感叹号即可.

var str = "abc";
console.log(!!str);

输出

true

双波浪号的妙用(将内容转化为数字,或者小数取整)

这是最近看到的一段经典的代码里面学到的知识.这个用来装逼非常的合适.而实际上在使用中也会非常好用.

var str = "123.123";
console.log(~~str);

输出

123

如上,可以看到,使用双波浪号可以将字符串转化为数字,并且取整.

它的各种妙用如下图所示:

如上图所示,波浪号可以将各种东西都转化为数字,为0或者-1.

需要注意的是,~~双波浪号的取整是直接去掉小数点后的小数,而并不是采用的四省五入的计算.

解决jquery ajax调用远程接口的跨域问题

首先,接口必须允许远程调用.这是后端或者运维的事情.你必须保证你得到的一个接口是允许远程调用的.否则,就没啥了.

好,我们来看下如何解决

$.ajax({
    type:‘get‘,
    url:url,
    // 下面的两行代码,就是解决跨域的关键
    xhrFields: {withCredentials: true},
    crossDomain: true,
    // 就是上面的两行代码
    success: function(data){
        // do something
    },
    error: function(data){
        // do something
    }
});

对于get 或者 post 均有效果的哦!

不要问我为什么,我只会用~

利用jquery 创建 json 数据

首先,我想到的居然是字符串拼接的方法.被别人看到后笑话了半天,说你是真够笨的.

哎,没办法,谁叫我基础差呢.经过一番请教,终于知道怎么创建json数据是最方便的.

第一步,创建一个对象.

第二部,往对象里面写值.

第三步,将对象转化为json数据.

具体怎么做,看下图吧!

关键代码如下:

var obj = {};
JSON.stringify(obj);

字符串截取

这个比较常用.但是我每次都需要从搜索引擎来找这个单词.就是substring(0,1);

var str = "abcdefg";
str.substring(str.length-1,str.length);

如上面这段代码,就会截取最后一位的字符.

字符串的截取很多地方都需要使用,例如url的截取.要善用各种组合,灵活运用,才能用得更好.

数字保留小数点后N位

这个是比较常见的一种需求.例如,我们在计算一个数值,而这个数值很明显是一个很长的小数.那么我们在使用中就很有比较需要保留几位小数,然后使用.

怎么做呢?下面是我的做法:

var num = 10 / 3;
~~(num*10000)/10000;

返回

3.3333

这里,是不采用四省五入的方法的.如果需要四省五入,将~~替换成 Math.round 即可.

创建一个随机整数

举个例子,我们需要创建一个0-100以内的随机整数.

var randNum = ~~(Math.random()*100);

这样,我们就创建了一个随机数了.

尽量少的去操作DOM结构

举个例子,我们可能经常会做的就是三级联动的省市县代码.而下拉菜单很显然需要我们去操作DOM结构.

下面是一个不良的示范.

var $obj = $("#obj");
var data = [{"id":0,"name":"a"},{"id":1,"name":"b"}];
for (var i = 0; i < data.length; i++) {
    $obj.append(‘<option value="‘+data[i].id+‘">‘+data[i].name+‘</option>‘);
};

如上,有一条数据,就需要操作一次DOM,这样很浪费资源.虽然解决了问题.但是我不推荐这么做.同样的功能,我会这样来实现:

var $obj = $("#obj");
var data = [{"id":0,"name":"a"},{"id":1,"name":"b"}];
var tempStr = "";
for (var i = 0; i < data.length; i++) {
    tempStr +=(‘<option value="‘+data[i].id+‘">‘+data[i].name+‘</option>‘);
};
$obj.html(tempStr);

如上,先把所有的结果全部放到一个临时字符串内.最后,再一次性把结果给插入到DOM中,这样,就只执行了一次DOM结构.性能就会大大提升了.

小结

  1. 命名一定要规范,不要尝试使用别人看不懂的命名.有时候,好的命名胜过一切.
  2. 如果逻辑很复杂,尝试把复杂的逻辑拆解成一个一个的小逻辑,这样能够更加好的解决问题和排查问题.
  3. 先用最笨的方法把效果实现了,然后再考虑优化代码.一开始就考虑太多,会发现问题很难解决,尤其是像我这样的初学者.
  4. 一定要写注释!!!!
  5. 耐心,遇到问题抽根烟,好好想一想.
  6. 除非是很难,并且结果非常确定,并且搜索引擎解决不了.否则不要去群里问人.
  7. 在群里讨论概念完全是浪费时间.

本文由FungLeo原创,允许转载.但转载必须署名作者,并保留文章首发链接.否则将追究法律责任.

首发地址:http://blog.csdn.net/FungLeo/article/details/51378593

时间: 2024-12-26 11:35:52

javascript 学习小结 JS装逼技巧(一) by FungLeo的相关文章

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo 前言 在JS学习中,对于原生的很多东西我理解得并不透彻.但是使用jQuery来操作DOM,基本上还是非常熟练的.但是对于AJAX数据交互的处理,我不是很理解. 近期团队交给我一个后端全接口提供给我的项目.我要利用这些接口来自己组织前端代码.为了学习,我决定不使用VUE或者其他的前端框架来做.而是只使用jQuery框架,数据的部分全部使用拼接字符串的形式实现. 获取数据,显示数据,提交数据. 在这个项目中(

javascript 学习小结 (二) by FungLeo

javascript 学习小结 (二) by FungLeo 前言 前面写过一个学习小结javascript 学习小结 JS装逼技巧(一) by FungLeo 那篇博文总结的东西还是比较多的. 但是JS有很多的内容,都是很有用的知识点,不可能一下子记住.因此,我的学习小结的会一直更新. 因为学习进度的不同,可能每篇博文的长短也不一样,有的学的东西多,就长点. 查询某个字符串在某个数组中的索引值 笨方法 我的基础比较差,所以很多东西是记不住的.因此,我在需要这样做的时候,我写了如下代码 var

JavaScript学习12 JS中定义对象的几种方式

JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript"> var object = new Object(); object.name

JavaScript学习笔记——js变量的布尔值

typeof(1): numbertypeof(NaN): numbertypeof(Number.MIN_VALUE): numbertypeof(Infinity): numbertypeof("123"): stringtypeof(true): booleantypeof(window): objecttypeof(Array()): objecttypeof(function(){}): functiontypeof(document): objecttypeof(null)

JavaScript学习10 JS数据类型、强制类型转换和对象属性

JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以及String. Undefined数据类型的值只有一个:undefined. 在JavaScript中,如果函数没有声明返回值,那么会返回undefined.(后面有实例). 如果typeof后面跟一个未定义的参数,也是返回undefined. Null数据类型的值只有一个:null. null与

JavaScript学习03 JS函数

JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的参数可以任意多个,不用声明变量类型,只用给出变量名: function myFunction(name, job) { 这里是要执行的代码 } 函数返回值 在函数中使用return语句,函数会停止执行,返回调用它的地方. 函数的返回值也不用声明类型,直接返回即可. function myFuncti

JavaScript学习12 JS中定义对象的几种方式【转】

avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript

Word公式装逼技巧,你绝对不会!

Word论文排版是非常有技术含量的.只是纯文本格式时都有很多技巧,累倒一群人,更不用说还加上有数学公式了.有数学公式也就算了,问题是公式排版更是难上加难.想要在人前装逼一把?没有这些技巧你是绝对不行的! 当然,前提是你使用的是MathType公式编辑器来编辑公式的,如果是Office自带的公式编辑器,那就回天乏术了,该怎么着就怎么着吧. 公式偏上或偏下: 在Word中用公式编辑出来的公式总是偏在文字的右上方或者是右下方,不能与文字对齐成一行. 解决方法: 1.选中公式,在Word中选择“格式”—

JAVAscript学习笔记 js句柄监听事件 第四节 (原创) 参考js使用表

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>句柄添加监听事件</title> <script type="text/javascript" src="tzy.js"></script> </head> <body>