js sort排序 《JavaScript权威指南》读书笔记——JavaScript核心(2)

电脑杂谈  发布时间:2018-02-01 08:09:46  来源:网络整理

js sort 排序看不懂_js sort排序_js的sort排序方法

js声明变量使用var和不用var的区别,大部分我们使用的时候都是一样的,例如:

而在使用delete属性时,使用var的变量是不允许删除的,例如:

八、JS的局部变量提升和块级作用域

先来看代码执行的结果(也是一道经典的js面试题):

这是什么原因造成的?为什么不是global/local/global呢?因为es5没有块级作用域,局部变量被提升到最前了声明了,js解析器的机制造成的,上面的代码类似于下面这段代码:

所以通常来说,在作用域里面变量声明的代码要放在代码的最顶部,这是一个非常不错的编程习惯,也可以避免一些不必要的问题。

九、特殊的Date类型转换

如果我告诉你typeof(new Date()+1)和typeof(new Date-1)的值不同你信吗?

下面来看具体代码:

那上面的问题是怎么造成的,typeof(now+1)不应该是number类型吗?

原因分析:

“+” 有两种含义,一个是字符串连接,一个是加法。

类型转换的时候,默认先调用valueOf,然后才调用toString,而Date类型除外,所以对于new Date()的时候优先,调用的是toString(),而“+”操作是把他当成了字符串连接而不是数字相加。js sort排序

“-”的时候,只有减法的含义,也就是说优先调用valuleOf,所以结果为number类

十、js的继承机制

继承机制:js是通过原型链实现继承的。简单实现如下:

更多的可以查看阮一峰老师的:

十一、Array的高级用法

1.slice和splice区别

虽然都是截取数组然而slice和splice的区别很大,接下来具体来看。

先说slice

slice定义:方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。原始数组不会被修改。

Array.prototype.slice(x,y); 第一位参数为截取开始下标,截取的时候包含此下标,第二位参数缺省参数,如果不填写,标识截取到数组的最后一位,如果填写了,标识截取到下标的位置,截取元素不包含最后一位,截取不改变原来数组。

小技巧:可以使用var newArray =array.splice();实现数组复制。

2.length的另一种用法

js sort 排序看不懂_js的sort排序方法_js sort排序

3.reduce()

定义:方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值。

4.every()和some()

定义:数组的逻辑判断,对每一个元素进行判断,返回true或者false.

every()每一个元素都要满足条件才会返回true,some()其中一项满足条件即会为true.

5.map()

定义:将调用数组的每一个元素传递给指定的函数,并返回一个新的数组,不会改变老数组。

6.Arguments.callee

定义:当前正在执行的函数.

在匿名函数中使用Arguments.callee引用自身,以便实现递归。代码如下:

7.sort()排序规则的理解

sort()是可以介绍一个匿名函数作为排序规则的,例如:

理解:a-b得到一个值,而这个正常的值将按照数字的正常规则进行排序,也就是 负数=>0=>正数,所以理解a-b不能单纯的理解他为一个boolean值,而是根据a-b给数组一个排序规则,如果需要倒叙的话就用b-a.

十二、高阶函数

定义:高阶函数就是操作函数的函数,它接受一个或多个作为参数,并返回一个新函数。

十三、正则表达式字符

[...] 方块内任意字符

[^...] 非方块内任意字符

\w [a-zA-Z0-9]

\W [^a-zA-Z0-9]

\d [0-9]

\D [^0-9]

十四、解构赋值

十五、闭包

“闭包”这个词刚开始开的时候就头皮发麻,感觉很“高大上”难以理解,其实掌握之后,发现也挺好用的,下面介绍一下我对于闭包的理解。

定义:闭包就是可以访问一个函数局部(私有)变量的方法。

如上代码:利用闭包可以给用特权的方法访问私有属性,保证了私有变量不被修改和污染,当然根据实际需求可以设置通过方法修改私有属性也是可行的。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-64292-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...