我的前端日常坑(2016.08.29)

我乃前端小白一个。这里记录了一个人开发中撞破头的趣事。

有一天,我在做数据可视化的页面,用百度出品的echarts库。做成大概就是表格显示x行y列数据,用折线图表示,表头有按钮可以开关对应的折线。

看着简单吧,但对我这个没啥前端经验的小白,真是窗户纸一层层捅破啊。

2016.08.26 关于js的for循环之一

我向按钮们绑定事件。

我:

    for(var i=0; i<xx.length; i++) {
      ...  
    }
    for(var i=0; i<yy.length; i++) {
      //调用
      //获取表格数据
      var y = yFunc(i);
      ...
    }
    //code
    //往了上个周五咋写的了,反正变量一片混乱


  • (卧槽,我明明)
  • 有bug!
  • 打开chrome F12!
  • 卧槽!
  • 函数的参数i怎么都102了!好大!
  • 什么鬼!
    。。。
  • 由于我一个人苦逼搞前端,没人可问,于是在google众里寻他千百度~
    。。。
  • 妈蛋!
  • 原来那个i的作用域不是在{}里面!
  • 而js以function为单位一级一级延伸作用域!
  • 妈蛋,到底该咋办!
  • 逼我!我去看看电脑里有的js库是咋写的!
  • 先来看看jQuery-2.1.1
    关于全局变量
var class2type = {};
var toString = class2type.toString;
var hasOwn = class2type.hasOwnProperty;

关于简单的for循环

var i = 0;
for( ; i < length; i++){
    //code
}
  • 不能随便声明全局变量啊!
  • 反正以后我全局变量都放在一个Object里。。。
  • 反正以后for循环像上面那样~

2016.08.29 js关于等等和等等等与方括号和点

  • 咦!
  • 打开jquery-2.1.1之后
  • 我的atom的JSHint居然警告!
    get: function( num ) {
        return num != null ?

            // Return just the one element from the set
            ( num < 0 ? this[ num + this.length ] : this[ num ] ) :

            // Return all the elements in a clean array
            slice.call( this );
    }

  //tWarningW041 - Use '!==' to compare with 'null'.at line 111 col 20
  • 天呐!jquery都会欸警告!到底用'!='还是'!=='!
  • 还有!
inArray: function( elem, arr, i ) {
        return arr == null ? -1 : indexOf.call( arr, elem, i );
    },
//WarningW041 - Use '===' to compare with 'null'.at line 421 col 20
  • 看来是'='和'=='之间的战争了!
  • 还有!
    delete Expr.find["ID"];
    //W069 - ['ID'] is better written in dot notation.at line 1105 col 25
The identity (===) operator behaves identically to the equality (==) operator except no type conversion is done, and the types must be the same to be considered equal.
Reference: [Javascript Tutorial: Comparison Operators](http://www.c-point.com/javascript_tutorial/jsgrpComparison.htm)
The ==operator will compare for equality *after doing any necessary type conversions*. The ===operator will **not** do the conversion, so if two values are not the same type ===
 will simply return false
. Both are equally quick.
To quote Douglas Crockford's excellent [JavaScript: The Good Parts](http://rads.stackoverflow.com/amzn/click/0596517742),
  • 我慢慢翻译~
  • 来看这个!
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
' \t\r\n ' == 0 // true
  • WTF!
  • '=='
  • 看第二的答案!
 Using the ==operator (*Equality*)
true == 1; //true, because 'true' is converted to 1 and then compared
"2" == 2; //true, because "2" is converted to 2 and then compared
Using the ===operator (*Identity*)
true === 1; //false
"2" === 2; //false
This is because the **equality operator ==
 does type coercion**, meaning that the interpreter implicitly tries to convert the values before comparing.
On the other hand, the **identity operator ===
 does not do type coercion**, and thus does not convert the values when comparing.
符号表示法
get = object.property;
object.property = set;
以上代码中,属性名必须是一个有效的JavaScript标识符,例如,一串字母数字字符,也包括下划线及美元符号,但不能以数字作为开头。比如,
object.$1是合法的,而object.1是无效不合法的。
document.createElement('pre');
在上述代码块中,对象document中存在一个名为"createElement"的方法并且被调用了。
括号表示法
get=object[property_name];
object[property_name] = set;
property_name是一个字符串。该字符串不一定是一个合法的标识符;它可以是任意值,例如,"1foo","!bar!", 甚至是一个空格。
document['createElement']('pre');
这里的代码的功能跟上一个列子的作用是相同的。
  • 看来两者的命名规则是主要区别之一
  • 所以为了规范,用点好;某些时候为了随性的命名,页可以用方括号
  • 以上是我猜的!
  • 不要认真!我是几天经验的小白!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容