对于博主这种英语瞎来说,有些语法看几十次技术文档过后还是傻傻搞不清,就是毫无理由的记不住,就好像汉字看久了会不认识一样。于是,博主根据联想记忆法找到一些记忆易混淆语法的窍门,在这里分享给与我有同样痛苦的童鞋。
even与odd
使用场景:多用于CSS的伪类选择器nth-child(n)
。
巧记:数它们的字母个数,odd有3个字母,3是奇数,所以odd的意思就是奇数;亦然,even有4个字母,为偶数,因此even的意思为偶数。
row与col
使用场景:用于table
样式的设置
巧记:首先,看到col中有一个字母l很容易让人联想到->竖竖的->一列,然后,我们知道了col的意思为列,那么row自然代表”行“了。
unshift与shift(Array的方法)
使用场景:数组(Array)对其首尾有增删的4种方法,数组尾端的方法push
与pop
很容易根据单词语义理解其用法,而数组首端的增删方法unshift
与shift
语义模糊,很难根据字面意思分辨出其用法
巧记: unshift单词可以看成:un + shift,关键在‘+’连接符,‘+’顾名思义为加的操作,加与增意义相近,所以通过联想记忆,可知unshift
是对数组首端进行增的操作。亦然,shift
则是对数组尾端进行删的操作。
call()与apply()
使用场景:这两个方法用法相近,都是调用一个对象的一个方法,以另一个对象替换当前对象。将一个函数的对象上下文从初始的上下文改变为由 第一个参数 指定的新对象。如果没有提供第一个参数,那么 Global 对象被用作 函数所要执行的上下文环境。问题在于他们中的第二个参数哪个可用数组传参,哪个可以用无限多个参数?
巧记: apply()
方法,注意该方法的第一个字母:a,由‘a’联想到array(数组)。所以,显而易见,apply
方法只有两个参数,其中第二个参数使用数组array进行传参。
(等待再次积累,更新)
for…of与for…in
使用场景:进行对象的循环,分不清的地方在于:他们到底哪个是获取对象的值,哪个是获取对象的属性?
巧记: 可以从单词的语义出发,of表示“…的…”也就是对象的值了,in表示“在…里面”,是否这个属性在对象中,这样的话,我们知道了:for…in 表示循环会遍历一个object所有的可枚举属性 ;for…of 表示迭代出任何拥有[Symbol.iterator] 属性的collection对象的每个元素(值)。
没理解的想要捷径的同学注意了:“of”和“in”用英语读分别发两个音和一个音。然后迭代对象每项由两部分组成:属性和值,恰巧读出来也是两个音和一个音,所以他们是这样的:“of值”,“in属性”,都是读出三个音。理解了吗,*2:of对应1:值,1:in对应2:属性,总共是三个音。
来,跟我读:of值,in属性。
就酱紫了。
该条目参阅了MDN相关知识,链接在此。