escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z; encodeURI不编码字符有82个:!,#,$,&,’,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z; encodeURIComponent不编码字符有71个:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z 总结:escape基本被encodeURI包含了,可不使用escape,传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
‘+’规则:加号两边只要有字符串就做拼接,都没有字符串就做加法,与undefined加为NaN,有对象调toString() ‘==’规则:大的原则是将等号两边转为number类型再比较,这里要注意不是转为boolean再比较
一个例子说明问题:
<div id="test"> <span style="color:red">test1</span> test2 </div>1)innerHTML的值是“<span style=”color:red”>test1</span> test2 ”
2)outerHTML的值是<div id=”test”><span style=”color:red”>test1</span> test2</div>
这里想说容易忽略的第二个和第三个参数,第二个参数可以改变obj转为字符串后的内容,space表示缩进,若省略,那么obj转成的字符串默认在一行显示,如果想让该字符串像对象那样展示,可以将space设为4
(1)、使用getAttribute(‘属性名’); (2)、使用HTML5的dataset,例子如下:
<div id="test" data-age="24"> Click Here </div> var test = document.getElementById('test'); console.log(test.getAttribute('data-age'));//24 console.log(test.dataset.age);//24注意点:1、获取属性时要去除‘data-’前缀;2、若属性中还含有连字符,如‘data-age-cat’,要转为驼峰式:dataset.ageCat;3、兼容性到IE11+; 为何使用:该方式可以集中管理自定义属性,dataset只是attribute的一个子集
用途:判断对象是否为数组/对象的元素/属性 格式:(变量 in 对象) 当“对象”为数组时,“变量”指的是数组的“索引”; 当“对象”为对象是,“变量”指的是对象的“属性”。 数组示例: var arr = [“a”,”b”,”2”,”3”,”str”]; var result = (“b” in arr); //false var result1 = (4 in arr); //true 对象示例: var obj={ w:”wen”, j:”jian”, b:”bao” } var result=(2 in obj); //false var result1=(“j” in obj); //true