美文网首页
JavaScript some point

JavaScript some point

作者: passssssss | 来源:发表于2016-10-28 16:06 被阅读0次
    1. 单引号双引号没有区别
    2. JavaScript允许对任意数据类型做比较:比如false==0; //true 它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
      false===0; //false 它不会自动转换数据类型,如果数据类型不一致,返回false ,如果一致,再比较,所以尽量使用===
    3. NaN与null不一样 ,判断NaN只能通过 isNaN()
    4. 浮点数比较 1 / 3 === (1 - 2 / 3); //false 机器无法处理无线循环的小数,要比较两个浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个阈值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
    5. static 模式 , 在js代码中添加一个字符串 'user static';,就表示使用static模式,(ps不是所有的浏览器都支持static模式),在这个模式下,声明的变量必须是有 var 前缀的,没有var前缀的变量表示全局变量
    6. 转义字符在js中,还可以unicode和ascii来表示字符用 , 比如 '\x41' 表示 'A',
    7. 字符串连接,出了使用+,还可用ES6新标准,比如 var = {你好, ${name}, 你今年${age}岁了!}
    8. js的数组,var array = [1,2,'hello',NaN]; 如果给数组的长度赋值,会导致数组长度改变,并且如果索引超过数组长度的值,也会导致数组变化,比如 var array =['hello',1] ; array[4] = 3;,这时数组会变成['hello',1,undefined,undefined,3]
    9. 数组的unshift 和 shift , shift会把数组的第一个元素删掉
    10. 关于数组的一些方法,reverse,splice,slice,sort,conact(ps 这个方法并没有修改原来的数组,只是返回了一个新的数组),join
    11. js所有对象的属性名都是字符串,js的对象设计很神奇,所以js可以动态的改变对象的属性,比如删除对象的一个字段(delete xiaoming.age,这里的对象和类有区别么,如果没有区别,一个对象的两个实例,其中一个实例删除了一个属性,另一个会怎么样),in,hasownproperty)
    12. for in 循环数组,得到的是string 不是int
    var a = ['A', 'B', 'C'];
    for (var i in a) 
    { alert(i); // '0', '1', '2' 
      alert(a[i]); // 'A', 'B', 'C'
    }
    
    1. 为什么会存在set这个东西,set的foreach接受的function的前两个参数都是元素本身
    2. foreach(foreach不要求参数一致) for...of for..,in
      (ps)15. 计算机对于现实的代码表示是抽象,但是这些现实实物的现实语音的描述不也是抽象么,无敌
    3. function里面没有return的话,也是又返回的,只不过返回是undefined,相对于java的方法,function有两个特点,第一.参数处理 第二.function也是对象
    4. js引擎会自动在return后面补上;,所以需要有返回的时候return物理行后面不可以不跟东西。
    5. jsfunction的变量提升机制,所以对于js来说有一个规范,对于变量要在function开头声明全部。
    6. 全局变量window,块级引用变量let,声明常量const
    7. js的this指针设计的有点迷啊,感觉这里面是一个巨坑。
    8. 为了解决this的问题,有apply,call(ps。记住一切都是对象有助于理解js)
    9. 高阶函数(ps,这样可以提高js的上限),map和reduce是对运算的抽象,发现map和reduce不能改变当前的数组,需要用新的数组来接收。
    10. 存在问题 this、到底是个什么东西
    11. split() 为什么不是一个function,在什么情况下会报这个错误
    12. filter 删掉return false,留下return true 的arguments
    13. 关于js replace。 这个函数只能替换第一个字符,如果想要替换找到的所有字符,需要用到正则表达式 /\x/g,其中x就是期望替换的内容。
    14. sort 默认实现是比较ASCII码表数值的大小,对于数字,会先将数字转化为字符,然后比较字符的ASCII码表。
    15. 闭包(觉得闭包就是带有java中带有static变量的方法)。
    16. 变量提升和jsfor循环里面用var声明的变量属于for上层容器,而不是属于for块内部,es6为了修复这个bug,添加声明let
    17. 箭头函数一种简化的写法,如果返回的是类,要加中括号。
    18. generator函数, 看来java还是有很多没有的特性的。其他语言还是有很多的很不错的想法,
    19. typeof number boolean str nan function undefined 的typeof 的返回值不为object
      不要使用new Number()、new Boolean()、new String()创建包装对 象;
      用parseInt()或parseFloat()来转换任意类型到number;
      用String()来转换任意类型到string,或者直接调用某个对象的 toString()方法;
      通常不必把任意类型转换为boolean再判断,因为可以直接写if (myVar) {...};
      typeof操作符可以判断出number、boolean、string、function和 undefined;
      判断Array要使用Array.isArray(arr);
      判断null请使用myVar === null;
      判断某个全局变量是否存在用typeof window.myVar === 'undefined';
      函数内部判断某个变量是否存在用typeof myVar === 'undefined'。
    20. data
    21. regexp 正则表达式
    22. json , json的由来就是js,所以js自带json解析,还可以利用function对json进行预处理
    23. js中没有类,只有原型prototype,js中一切都是对象。这点跟java还是有区别的。创建对象Object.ceate(prototype) 或者 proto属性(ps 这个属性在有的浏览器中不支持,),js的构造函数既可以是对象的声明,又可以是函数
    24. 原型链这个东西还真是神奇,感觉这种设计有点然并卵
    25. 关于箭头函数请问如果用箭头函数该怎么写?
    function Cat(name) {
      this.name = name;
    }
    Cat.prototype.say = () => "Hello, " + this.name + "!"
    

    并不对。。。
    不对就对了.MDN this的词法箭头函数就是个简写形式的函数表达式,并且它拥有词法作用域的this值(即不会新产生自己作用域下的this, arguments, super 和 new.target 等对象)。此外,箭头函数总是匿名的。

    function Cat(name) {
      this.name = name;
    }
    Cat.prototype.say = () => "Hello, " + this.name + "!"
    

    在箭头函数里的this是它外层的this,
    外层根本就没有this,
    所以这里的this是undefined

    1. js的继承方式简直了 , js没有继承这个概念,js的继承好像完全由指针实现的。这里回来要好好看一哈,理解一下这种设计模式,想想这么设计的缺点
    2. haha ,果不其然,es6的新规则把这种复杂的继承方式对开发者影藏了,使开发者更加专注于业务。(ps 但是不是所有的浏览器都支持这种方式,但是也有自动工具将这种转换自动完成的比如,Babel这个工具。)
    3. window , screen , navigator , location , decoment ,ps(js真是无所不能跟网页有关的)
    4. getElementsByClassName getElementsByTagName ,这两个方法都可能有多个返回,所以返回结果会被放入数组当中。
    5. getElementsByClassName 返回的是子级别的数组,如果是子tag的子tag的对象的话,一定要在查找一层。
    6. getElementsByTagName 可以通过Tag来查找 比如
    <p>a</p>
    

    就可以通过p来查找

    1. 通过querySelector来根据id查找时。id前面要加上#比如查找id为handsome的element的时候,
      document.quertSelector('#handsome'); selector要通过selector的语法来,这个可以回来再看。
    2. innerHTML,innerContent,innerText,style(注意由于js和css的命名规则的问题,css的一些属性名字要给为驼峰法命名规范比如font_size改为fontSize)。
    3. appendChild , insertBefore (ps , JavaScript 是一个 已经被定义了的关键字,把他当做变量名的时候,可能会出问题)

    相关文章

      网友评论

          本文标题:JavaScript some point

          本文链接:https://www.haomeiwen.com/subject/iauluttx.html