资讯专栏INFORMATION COLUMN

javascript基础细节

wangxinarhat / 3032人阅读

摘要:语法部分属性默认的就是,所以不必显式指定为。不强制在每个语句结尾加,会自动加分号,但是在某些情况下会改变程序的语义,所以最好主动加。实际上,默认有一个全局对象。

语法部分:

1.type 属性: 默认的 type 就是 javascript, 所以不必显式指定 type 为 javascript。
2.javascript 不强制在每个语句结尾加 “;” , javascript 会自动加分号, 但是在某些情况下会改变程序的语义, 所以最好主动加 “;”。
3.两个相等运算符比较

‘==’ 相等( 值相等 ), 它会自动转换数据类型再比较, 很多时候会得到非常诡异的结果

‘===’ 严格相等( 数据类型和值都相等 ) , 它不会自动转换数据类型, 如果数据类型不一致, 返回false, 如果一致, 再比较
4.NaN 与所有其他值都不相等, 包括它自己:

NaN === NaN; // false

唯一能判断 NaN 的方法是通过 isNaN() 函数

isNaN(NaN); // true
5.浮点数比较

浮点数在运算过程中会产生误差, 因为计算机无法精确表示无限循环小数。 要比较两个浮点数是否相等, 只能计算它们之差的绝对值, 看是否小于某个阈值:Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
6.null 和 undefined

大多数情况下,我们都应该用 null , undefined 仅仅在判断函数参数是否传递的情况下有用
7.出于代码的可读性考虑,创建数组建议使用 "[ ]",而不使用 "new Array";
8.如果一个变量没有通过 "var" 声明就被使用,那么该变量就自动被声明为全局变量。使用 var 声明的变量则不是全局变量,它的范围就该被限制在该变量被声明的函数体内
9.启用 strict 模式(强制通过 var 声明变量)
10.多行字符串用反引号表示
11.使用模版字符串
12.要获取字符串某个指定位置的字符,使用类似 Array 的下标操作, 索引号从 0 开始。 字符串是不可变的, 如果对字符串的某个索引赋值, 不会有任何错误,但是也没有任何效果
13.直接给 Array 的 length 赋一个新的值会导致 Array 大小的变化
14.如果通过索引赋值时, 索引超过了范围, 同样会引起 Array 大小的变化, 但是不会有任何错误, 在编写代码时, 不建议直接修改 Array 的大小, 访问索引时要确保索引不会越界
15.数字 1 和字符串 "1" 是不同的元素
16.slice() 的起止参数包括开始索引, 不包括结束索引。
17.如果不给 slice() 传递任何参数, 它就会从头到尾截取所有元素。 利用这一点, 我们可以很容易地复制一个 Array
18.空数组继续 pop 不会报错,而是返回 undefined
19.concat() 方法并没有修改当前 Array, 而是返回了一个新的 Arrayconcat() 方法可以接收任意个元素和 Array, 并且自动把 Array 拆开, 然后全部添加到新的 Array
20.javascript 对象属性名必须是一个有效的变量名。 如果属性名包含特殊字符, 就必须用 "" 括起来
21.如果我们要检测 xiaoming 是否拥有某一属性, 可以用in操作符, 不过要小心, 如果 in 判断一个属性存在, 这个属性不一定是xiaoming 的, 它可能是 xiaoming 继承得到的
22.要判断一个属性是否是 xiaoming 自身拥有的,而不是继承得到的,可以用 hasOwnProperty() 方法
23.JavaScript把 nullundefined0NaN 和空字符串 "" 视为 false,其他值一概视为 true
24.由于 Array 也是对象, 而它的每个元素的索引被视为对象的属性, 因此, for ... in 循环可以直接循环出 Array 的索引
25.for ... in 循环由于历史遗留问题, 它遍历的实际上是对象的属性名称, for ... of` 循环则完全修复了这些问题, 它只循环集合本身的元素

函数部分:

1.函数如果没有 return 语句, 函数执行完毕后也会返回结果, 只是结果为 undefined
2.由于 JavaScript 允许传入任意个参数而不影响调用, 因此传入的参数比定义的参数多也没有问题, 虽然函数内部并不需要这些参数, 传入的参数比定义的少也没有问题
3.关键字 arguments 类似 Array 但它不是一个 Array
4.不在任何函数内定义的变量就具有全局作用域。 实际上, JavaScript 默认有一个全局对象 window。 以变量方式 var foo = function () {} 定义的函数实际上也是一个全局变量。
5.用 var that = this; , 你就可以放心地在方法内部定义其他函数,而不是把所有语句都堆到一个方法中。 对于普通函数调用, 通常把 this 绑定为 null
6.apply()call()的唯一区别

apply() 把参数打包成 Array 再传入;

call() 把参数按顺序传入。

7.所有实例的原型引用的是函数的 prototype 属性
8.箭头函数内部的 this 是词法作用域( 写代码或者定义时确定的 作用域,动态作用域是在运行时确定 ),由上下文确定。箭头函数完全修复了 this 的指向,this 总是指向词法作用域

标准对象

1.如果我们在使用 NumberBooleanString 时, 没有写 newNumber()Boolean()String() 被当做普通函数,把任何类型的数据转换为 numberbooleanstring 类型(注意不是其包装类型)

2.不要使用 new Number()new Boolean()new String() 创建包装对象;

3.用 parseInt()parseFloat() 来转换任意类型到 number

4.用 String() 来转换任意类型到 string ,或者直接调用某个对象的 toString() 方法;

5.通常不必把任意类型转换为 boolean 再判断,因为可以直接写 if (myVar) {...}

6.typeof 操作符可以判断出 numberbooleanstringfunctionundefined

7.判断 Array 要使用 Array.isArray(arr)

8.判断 null 请使用 myVar === null

9.判断某个全局变量是否存在用 typeof window.myVar === "undefined"

10.函数内部判断某个变量是否存在用 typeof myVar === "undefined"

11.任何对象都有 toString() 方法吗? nullundefined 就没有!

12.number 对象调用 toString()SyntaxError

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92468.html

相关文章

  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节

    摘要:的码点被称为基本字符区域。关于的介绍,我准备用文档阮一峰来做一些介绍,具体的可以参考文档引入的原因的对象属性名都是字符串,这容易造成属性名的冲突。其他的一些属性可以去看文档阮一峰注意函数前不能使用命令,否则会报错。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完...

    Lsnsh 评论0 收藏0
  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节

    摘要:的码点被称为基本字符区域。关于的介绍,我准备用文档阮一峰来做一些介绍,具体的可以参考文档引入的原因的对象属性名都是字符串,这容易造成属性名的冲突。其他的一些属性可以去看文档阮一峰注意函数前不能使用命令,否则会报错。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完...

    joyvw 评论0 收藏0
  • 重学前端学习笔记(六)--JavaScript类型有哪些你不知道的细节

    摘要:的码点被称为基本字符区域。关于的介绍,我准备用文档阮一峰来做一些介绍,具体的可以参考文档引入的原因的对象属性名都是字符串,这容易造成属性名的冲突。其他的一些属性可以去看文档阮一峰注意函数前不能使用命令,否则会报错。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完...

    zlyBear 评论0 收藏0
  • 你需要知道的 javascript细节

    摘要:代码示例语法和方法类似,不同的是,传入调用函数的参数变成以数组的形式传入,即改造上面的示例就是方法用于将函数体内的绑定到某个对象,然后返回一个新函数。类型包装对象数值字符串布尔值在一定条件下,也会自动转为对象,也就是原始类型的包装对象。 现在的前端框架层出不穷,3个月就要重新入门一次前端的现状,让我们来不及学好基础就开始上手框架。常常就因为这样,我们会很快到达基础基础技术瓶颈,基础是所...

    Airy 评论0 收藏0

发表评论

0条评论

wangxinarhat

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<