【发布时间】:2022-11-30 02:04:45
【问题描述】:
我有这两种解决方案,哪一种更好,为什么?我更喜欢选择在函数内部声明next和previous变量。但是还有其他选择,我想知道这是否只是代码风格的问题,或者 javascript 引擎是否使这两种解决方案中的一种优于另一种,因为这些变量的内存处理方式。
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
let next
let previous = null
while(head){
next = head.next
head.next = previous
previous = head
head = next
} return previous
};
/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head, next, previous = null) {
while(head){
next = head.next
head.next = previous
previous = head
head = next
} return previous
};
【问题讨论】:
-
你打算在调用函数时传递这些值吗?如果是,那么后者可能更适合你......
-
不,参数将仅用作函数主体的变量。
-
那么使它们成为函数参数的目的是什么?你想从中得到什么? (具体来说,你想以故意混淆代码为代价获得什么?)
-
正如您所说,这会使代码变得混乱。我有同样的感觉。但是有些人这样做并且确实有效。您可以使用相同的第一个参数(不使用第二个参数)调用同一个链表上的两个函数,并且您从两个函数中得到相同的结果。