语言中俚语和方言。在JavaScript中也有一些俚语或者说是术语,看似奇淫巧技,还是有一些用处,有三种语言组件可以来构造术语:强转、逻辑运算符和位变换。

1、强转:在javascript和大部分的语言中,强转是指强制将一种类型的对象或者实体转成另外一种的行为

1.转成String
var d = ' ' + 0;
console.log(d); //'0'

  

2.转成数字
console.log(+'10')//10 console.log(+new Date()) //时间戳 1471493169160 console.log(new Date() + '') //Thu Aug 18 2016 12:06:49 GMT+0800 (中国标准时间)

  

3.复杂的强转
++[[]][+[]]+[+[]] //'10' [[]] // =>[Array[0]] [+[]] // =>[0] 就是0 1 + [0] //=>10

2.逻辑运算符

1.通过比较或隐式回退赋值
&& 可以避免报错 当赋值语句来用
|| 可以用来填加默认值 name = arg [0] || "dfd"
! 转换成布尔值来做捷径 1.console.log(!0) // true
2.console.log(!1) //false
3.console.log(!-1) //false
4.console.log(!'0')//false
5.console.log(!'1')//false
6.console.log(!undefined)//true
7.console.log(!this)//false
8.console.log(!+[]) // true
9.console.log(![][![]])//true
10.console.log(!null)//true

  

.双重否
!!
如果是真就输出真,如果是null和undefined就!null 就是false false直接输入false,避免报错。
var user = {
isAdmin: function(){
return !! this.admin
}
} ; console.log(user.isAdmin()) //false !! undefined => !true =>false user.admin = true;
console.log(user.isAdmin()) //true !!true => !false =>true user.admin = false;
console.log(user.isAdmin()) //false !!false => !true =>false
3.立即调用函数
!function(){console.log('foo')}(); //=> foo

3.位变换

1. &
两个操作数进行按位与操作时,如果两个操作数在某个特定的位置都为1,那么按位与返回1
Hex转换为RGB
var color = 0xC0FFEE; console.log((color>>16) & 0xFF) //192 red 2. |
两个操作数进行按位与操作时,如果两个操作数在某个特定的位置任意一个为1,那么按位与返回1
数字截断,用来舍入数字
var x = (30.9 | 0);
console.log(x); //=> 30

  

3. ^
是一种判断两个操作数是否具有相反符号的简单方法
1、符号判等
var signsMatch = function(x,y){
  return !((x ^ y) < 0);
}; console.log(signsMatch(10, 10)); //fasle console.log(signsMatch(0, 0)); //true console.log(signsMatch(-10, -10)); //true 2.翻转位 可以用来切换对象的状态是非常有用。 var light = {
on:1,
toggle: function(){
return this.on ^=1;
}
} console.log(light.toggle()) //=>0
console.log(light.toggle()) //=>1
console.log(light.toggle()) //=>0

  

4.~
非 ,按位非从功能上说,基本是讲一个数字的符号进行反转,然后在减1. 1.按位运算
~-10 // =>9 -~10 //=>11 2*~-10 // =>18 2.字符串转数字
var num = “100.7” console.log(parseInt(num,10) === ~~num) //true

4.一些难懂的代码

1、暗中的eval

““[”sub”]["constructor"](""console.log('foo')")()

//=>foo

  

2.进制
当比较不同进制的数字是要保持小心。比如比较八进制和十进制和科学计数 1+ 064 == 65 //false
064 > 60 //false
30000000>4e9 //false 3.Unicode编码的变量
在javascript中允许使用Unicode用作属性描述符和变量名, var \u1000 = {\u1001: function(){
return 'Unicode'
}
} console.log(\u1000.\u1001()) //'Unicode'

  

false       =>  ![]
true => !![]
undefined => [][[]]
NaN => +[![]]
0 => +[]
1 => +!+[]
2 => !+[]+!+[]
10 => [+!+[]]+[+[]]
Array => []
Number => +[]
String => []+[]
Boolean => ![]
Function => []["filter"]
eval => []["filter"]["constructor"]( CODE )()
window => []["filter"]["constructor"]("return this")()

  

[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()
上面的代码是  alert(2)

  具体的网站可以访问:http://www.jsfuck.com/

javscript 中的术语和俚语的更多相关文章

  1. Oracle EBS Web ADI 中的术语

    Oracle EBS Web ADI 中的术语 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 异步调用异步调用是这样子的,和引入接口表中的数 ...

  2. GA中的术语及经常分析的指标

    GA中的术语 跳出客流:只浏览了网站的一个页面,并且没有进一步动作的访客目标转化:通常缩写为目标或转化,这是网站上面的一个预期或动作,通常被认为比标准网页更有价值,例如:"确认购买" ...

  3. kafka 中的术语

    出处:https://tech.meituan.com/2015/01/13/kafka-fs-design-theory.html table th:first-of-type { width: 7 ...

  4. YARN/MRv2 中基本术语介绍

    YARN/MRv2是下一代MapReduce框架(见Hadoop-0.23.0),该框架完全不同于当前的MapReduce框架,它在扩展性,容错性和通用性等方面更出色,据统计,Yarn有超过15000 ...

  5. C语言中一些术语的梳理_持续更新

    关键字.标识符.宏.预定义.预处理.编译.替换.预处理指令. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 标识符: ...

  6. 程序开发中的术语,如IDE,OOP等等

    我们在开发程序过程中,会用到一些与编译有关的术语,比如:[编辑器.编译器.调试器.连接器,链接器.解释器,集成开发环境(Integrated Development Environment,IDE). ...

  7. 游戏贴图中常用术语《DC》的理解

    什么是DC呢? 在GDI中,DC(Device Context)是一个非常重要的概念. 有的书中,将DC翻译为设备描述表,也有的书中翻译为设备上下文. 但是这些翻译,无法在我们的头脑里有强烈的冲击,无 ...

  8. C++中的术语

    1 声明式:所谓声明式是告诉编译器某个东西的名称和类型,但忽略细节.下面都是声明式: extern int x; //对象(object)声明式 记住:变量的声明加extern关键字 std::siz ...

  9. C# 基础中有关术语理解

    一.栈vs堆  深入理解堆栈.堆在内存中的实现 二.Socket 深入探析c# Socket 三.多线程 c# 多线程 --Mutex(互斥锁)

随机推荐

  1. 文件上传插件 -- plupload

    refresh:重新实例化uploader removeFile(id):从file中移除某个文件 splice(start,length):从队列中start开始删除length个文件, 返回被删除 ...

  2. bootstrap日期插件

    <!DOCTYPE HTML> <html> <head> <link href="http://netdna.bootstrapcdn.com/t ...

  3. jquery_插件

    编写插件的目的:给已有的一些列方法或函数做一个封装 jquery插件推荐命名方式 :jquery.[插件名].js  防止与插件库混淆 所有对象方法都应当附加到jquery.fn 对象上,所有的全局函 ...

  4. 安卓中級教程(2):@InjectView中的對象inject

    package com.example.ele_me.util; import java.lang.annotation.Annotation; import java.lang.reflect.Fi ...

  5. 【7集iCore3基础视频】7-4 iCore3连接示意图

    iCore3连接示意图: 高清源视频:链接:http://pan.baidu.com/s/1hr7ucpY%20密码:473n iCore3 购买链接:https://item.taobao.com/ ...

  6. ExtJS笔记 Store

    The Store class encapsulates a client side cache of Model objects. Stores load data via a Proxy, and ...

  7. SQLSERVER2012 附加数据库重名的问题

    SQL2012附加数据库时如何更改数据库名称呢 方法一: 在“附加为”那一栏填写新的数据库名称就可以 方法二: 使用脚本 附加时点击脚本会自动生成附加脚本 直接修改database的名称即可!

  8. rabbitMQ集群部署以及集群之间同步

    MQ集群部署 期待的部署架构 其中,一个机房有两台机器部署MQ,并组成集群,有一个机房的MQ集群作为中心集群,其他机房的MQ集群将消息同步到中心MQ集群中. 安装erlang,略.. 安装rabbit ...

  9. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  10. 用Block封装ASIHttpRequest

    用Block封装ASIHttpRequest 横方便的网络请求方法,不用每次都写代理方法.使代码先得很整齐,不会凌乱. 接口部分: // // LYHASIRequestBlock.h // ASIB ...