Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chinese Dicuss #18

Open
KieSun opened this issue Jun 19, 2018 · 44 comments
Open

Chinese Dicuss #18

KieSun opened this issue Jun 19, 2018 · 44 comments

Comments

@KieSun
Copy link
Member

KieSun commented Jun 19, 2018

For Chinese developers to discuss.
提供给中文开发者讨论问题

@KieSun KieSun added the discuss label Jun 19, 2018
@Wscats
Copy link

Wscats commented Jul 15, 2018

Great

@tuobaye0711
Copy link

good job

@jayconscious
Copy link

nice

@cobish
Copy link

cobish commented Jul 16, 2018

@KieSun 是否有计划添加一些关于 nodejs 和设计模式的知识点。

@KieSun
Copy link
Member Author

KieSun commented Jul 16, 2018

@cobish 设计模式会写,node 暂时没有计划

@cobish
Copy link

cobish commented Jul 16, 2018

@KieSun 期待设计模式 ing

@fXy-during
Copy link

点个赞,帮助很大。如果图片可以支持放大就更好了, 某些图片字体过小,导致看不清

@hipi
Copy link

hipi commented Jul 17, 2018

虽然 node 暂时没有计划 ,但还是很期待

@Flying-Snail
Copy link

数据结构二叉树的排名那里_select函数中if函数的判断条件应该是size > k - 1,当size = k -1时返回node。
因为要找第三大的数,左边size为2,要找的数才是它本身。

@dekura
Copy link

dekura commented Jul 18, 2018

在 前端/js/typeof 下
有一段这样的代码

let a
// 我们也可以这样判断 undefined
a === undefined
// 但是 undefined 保留字,能够在低版本浏览器被赋值
let undefined = 1
// 这样判断就会出错
// 所以可以用下面的方式来判断,并且代码量更少
// 因为 void 后面随便跟上一个组成表达式
// 返回就是 undefined
a === void 0

最后的 a===void 0
应该改为 a = void 0

@KieSun
Copy link
Member Author

KieSun commented Jul 18, 2018

@Flying-Snail 代码没问题

@Flying-Snail
Copy link

@dekura 这里的目的就是为了判断a的值是否是undefined,=不就是a被赋值为undefined了么

@Flying-Snail
Copy link

@KieSun 额,node中的size是包含node本身的大小。比如有5个数,左子树3个,右子数1个。现在k为3,size取的是左子树的大小也就是3.这个时候是我们需要的节点是在左边,但是因为size=k,代码中的情况是返回root节点本身的。

@KieSun
Copy link
Member Author

KieSun commented Jul 18, 2018

@Flying-Snail 首先 select 是查找第几小的函数,第几小从 0 开始,所以当你有 5 个数分别为 7,1,3,4,8 时,依次排序为 1,3,4,7,8,从 0 开始排序,所以 select(3) 的答案为 7 ,也就是根节点

@Flying-Snail
Copy link

@KieSun 这个查找是从0开始的啊。。。

@KieSun
Copy link
Member Author

KieSun commented Jul 18, 2018

@Flying-Snail 恩,你可以阅读下算法(第四版),毕竟人家是权威。

@Flying-Snail
Copy link

@KieSun 好的~

@Techiu
Copy link

Techiu commented Jul 19, 2018

// 但是 undefined 保留字,能够在低版本浏览器被赋值

应该说undefined不是保留字吧?

@Flying-Snail
Copy link

@Techiu undefined不是保留字,它是内置对象。只不过后来被设置了只读属性。

@wangliuyong
Copy link

总结的很好,点个赞

@KieSun
Copy link
Member Author

KieSun commented Jul 19, 2018

@wangliuyong 谢谢

@yuu2lee4
Copy link

class MyDate extends Date {
test() {
return this.getTime()
}
}
let myDate = new MyDate()
myDate.test()
这个我试了 在chrome里面没问题

@zgw010
Copy link

zgw010 commented Jul 23, 2018

想了半天下面的reduce的返回数组为什么要多加一个[]呢?

const flattenDeep = (arr) => Array.isArray(arr)
  ? arr.reduce( (a, b) => [...flattenDeep(a), ...flattenDeep(b)] , [])
  : [arr]

flattenDeep([1, [[2], [3, [4]], 5]])

@KieSun
Copy link
Member Author

KieSun commented Jul 24, 2018

@Hasaki1997 数组是给 reduce 用的

@AquaJerry
Copy link

说些题外话,代码写得好的大神,写起中文来也是非常厉害,一句话能写出四个语法错误(位于https://yuchengkai.cn/docs/about/):

求职:如果你能提供一份杭州不错的前端岗位机会,可以联系我的邮箱

  1. “如果”+句子, 逗号后应是另一个句子。
  2. “联系我的邮箱”?
  3. “一份机会”?
  4. (“杭州不错的前端岗位”)“机会”, 有“的”字的形容词通常放在没有“的”字的前面。

好吧,我承认我也经常犯这样的错误。

@KieSun
Copy link
Member Author

KieSun commented Jul 24, 2018

@AquaJerry 真的给大佬跪了😂

@naihe138
Copy link
Member

@AquaJerry 6的不行

@blackhu0804
Copy link

@KieSun ,请问在 https://yuchengkai.cn/docs/zh/frontend/#this ,这个例子中

function foo() {
	console.log(this.a)
}
var a = 2
foo()

var obj = {
	a: 2,
	foo: foo
}
obj.foo()

// 以上两者情况 `this` 只依赖于调用函数前的对象,优先级是第二个情况大于第一个情况

// 以下情况是优先级最高的,`this` 只会绑定在 `c` 上,不会被任何方式修改 `this` 指向
var c = new foo()
c.a = 3
console.log(c.a)

// 还有种就是利用 call,apply,bind 改变 this,这个优先级仅次于 new

第一个 a 是不是应该改为等于1

@timeTravelCYN
Copy link
Member

@hu970804 👍

@KieSun
Copy link
Member Author

KieSun commented Jul 26, 2018

@hu970804 恩,改为 1 更加清楚。

@xixilive
Copy link
Contributor

xixilive commented Aug 2, 2018

@KieSun

安全部分:XSS要补上最重要的防御策略:http-only cookie, 通常XSS和CSRF是搭配使用的,比如用XSS偷cookie,再用CSRF做跨站请求(带上偷来的cookie)。

优化部分:利用图片URL请求回传客户端错误不是好的做法。

数据结构部分:与前缀数对应的还有个后缀树,通常解决最大子串问题,可以考虑加进来伐?

浏览器部分:可以考虑把WebAssembly WebVR WebRTC内容加进来

@Anshiii
Copy link

Anshiii commented Aug 8, 2018

react 中 setState 这个 api 并不是绝对异步的,你可以在 一个 setTimeout 内调用多次这个 api,state 是立刻就被改变的。

@xixilive
Copy link
Contributor

@Anshiii 异步或者同步是绝对的,是二值的,没有semi-sync或者semi-async这种说法哈😆

@Anshiii
Copy link

Anshiii commented Aug 13, 2018

@xixilive 如果以 setState 后发生的现象来说,改变可能是即刻也可能非即刻。但是 setState 实际做的是将更新的任务放到队列中,按你的说法,这应该是绝对同步了。

@TanQiaoFang
Copy link

verynice

@peisam
Copy link

peisam commented Aug 19, 2018

快排part函数第二参数不能这样传,这会导致left前面的部分不能与基准值比较,还有里面那个多了个swap

function quickSort(array, left, right) {
  if (left < right) {
    swap(array, , right)
    // 随机取值,然后和末尾交换,这样做比固定取一个位置的复杂度略低
    let indexs = part(array, parseInt(Math.random() * (right - left + 1)) + left, right);
    quickSort(array, left, indexs[0]);
    quickSort(array, indexs[1] + 1, right);
  }
}

@AlbertKnag
Copy link

提个建议,脑图中网络相关-缓存部分应该放在http的下面

@ChenYCL
Copy link

ChenYCL commented Sep 2, 2018

前端virtualDom 这个xxToNode是不是clone打错了
// 删除第三个 li
ul.childNodes[2].remove()
// 将第四个 li 和第五个交换位置
let fromNode = ul.childNodes[4]
let toNode = node.childNodes[3]
let cloneFromNode = fromNode.cloneNode(true)
let cloenToNode = toNode.cloneNode(true)
ul.replaceChild(cloneFromNode, toNode)
ul.replaceChild(cloenToNode, fromNode)

@maskleo
Copy link

maskleo commented Sep 3, 2018

https://yuchengkai.cn/docs/zh/cs/#post-%E5%92%8C-get-%E7%9A%84%E5%8C%BA%E5%88%AB

303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源

https://github.com/InterviewMap/CS-Interview-Knowledge-Map/blob/master/Network/Network-zh.md#%E5%B8%B8%E8%A7%81%E7%8A%B6%E6%80%81%E7%A0%81

303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源

@xqxian
Copy link

xqxian commented Sep 3, 2018

@KieSun 作者你好,我对Promise实现中的resolutionProcedure()函数有一点疑问,想请教一下,就是里面这一段:
image
规范确实是要求遇到x为Promise时要做这些处理,但是我觉得紧接着下面的这一段好像已经可以处理x为Promise的情况了,上面的这段看起来好像有点多余(?):
image
我的理解是下面这段可以处理x为thenable对象的情况,而x为Promise时也是thenable对象,所以同样可以被这一段处理,不需要上面的那段专门判断x是Promise的实例然后写相关处理。我试过去掉上面那段的代码,同样也是可以通过a+测试的:
image
image
不知道您有考虑过这方面吗?如果我理解有误欢迎指正,谢谢!

@DengDongXia
Copy link

image
疑问:304状态码不是表示资源未发生改变,可以直接使用本地缓存的意思吗,感觉这个解释不太恰当

@llftt
Copy link

llftt commented Sep 17, 2018

function checkArray(array) {
if (!array || array.length <= 2) return false;
return true;
}

function insertion(array) {
if(!checkArray(array)) return;
for (let i = 1; i < array.length; i++) {
for (let j = i - 1; j >= 0 && array[j] > array[j + 1]; j--)
swap(array, j, j + 1);
}
return array;
}

算法那块关于排序里面不符合条件拦截的,应该是上面这种

@qingtianiii
Copy link

qingtianiii commented Sep 19, 2018

关于 js 类型转化 -> 对象转为基本类型 那里有些疑惑

假设有这么个对象

var a = {
  toString () {
    return 'toString'
  },
  valueOf () {
    return 'valueOf'
  }
}

alert(a) // toString

如果说,会优先调用 valueOf 的话,那为什么 alert 的结果是 toString ??

@shery
Copy link

shery commented Sep 20, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests