记录一下JS的小知识点

1.严格模式和非严格模式的区别

    严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with,

    严格模式中 call apply传入null undefined保持原样不被转换为window

2.JSON数据格式要求严格正确,不能有注释和符号错误

3.JS最常用的垃圾收集方式是标记清除

     管理内存使用接触引用,一旦数据不再有用,将其值设置为null来释放其引用。

4.对数组的复制,只是复制指向底层数据结构的指针,可以采用变通的复制方式

        const a1=[1,2];

        const a2=a1.concat();

        a2[0]=2;

        a1 // [1, 2]

5.ES5比较两个值是否相等

     只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。

6.encodeURIComponent

不会对下列字符编码 ASCII字母、数字、~!*()'

将字符串作为URI组件编码 , 当你需要编码URL中的参数的时候,那么encodeURIComponent是最好方法。可以将URL中的参数中的 "/" 编码

7.encodeURI

不会对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+';

如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI。

这个URL只有空格会被编码 //不会被编码

8.escape

escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。

编码之后的效果是%XX或者%uXXXX这种形式。

其中 ASCII字母、数字、@*/+ ,这几个字符不会被编码,其余的都会。

如果只是编码字符串,不和URL有半毛钱关系,那么用escape。

9.表单下载有问题:

EXCEL中显示数字总以科学计数法显示;并且使用join(",")方法,EXCEL也不识别,任然是科学计数法

其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0。

解决这个问题:

只要把数字字段后面加上显示上看不见的字符即可,字符串前面或者结尾加上制表符"\t".

php 程序可以这样判断,注意一定是"\t",不是'\t'.

你可能感兴趣的:(记录一下JS的小知识点)