JavaScript some point

  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 是一个 已经被定义了的关键字,把他当做变量名的时候,可能会出问题)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容