关于心得:聊聊客户端渲染

我始终有一个主张,那就是 question is more important than answer ,答案诚然很重要然而你提出的问题才是最重要的。 第一个事实是,软件开发畛域有很多问题,每一个都值得解答 因为解答得好的答案(的产出)须要(产答案者)在那方面的充分常识量(同样一个问题,令人满意的答案和不令人满意的答案 二者体现出的差别是可感知的),但每一个问题的答案都无奈反馈到 “这是不是一个值得解答的问题” (这是不是一个花工夫去做的问题?它的答案并不是问题自身的答案决定的:它有另外的支配力) 第二个事实是,问对了问题比问错了问题然而失去了称心的答案更重要。所以 “不关怀一个问题”,反而是给你了去让本人所关怀的问题(与谁所关怀的问题)不同的机会。 最初可见的是,问题的差别,才是人的差别。答案的差别(对哪个答案称心的差别),并不是人的差别,而是外行和在行的差别。 什么才是正确的问题,这是重要的,尤其在 the major (这个房间里的大多数人) 都没有问出正确的问题的状况下。放弃关注谬误的问题,能力关注起正确的问题来。 “看不懂,也不想懂” 未必是谬误的,反而可能是正确的,甚至暗藏着智慧。 参考 为什么当初又风行服务端渲染html?1 基于react或vue的服务端渲染和传统的服务端渲染(如PHP)的优劣?2 然而了解简单问题的能力又是另外一回事,这是十分 thug life 的 参考 为什么说VUE操作DOM效率比JQuery高很多?1 网上都说操作实在 DOM 慢,但测试后果却比 React 更快,为什么?4

August 19, 2021 · 1 min · jiezi

关于心得:为什么不用-PHP-做算法题

为什么不必 PHP 做算法题, php 不是有很多 array function 吗 <?php declare(strict_types=1);$a = ['a' => 'x', '42' => 'y'];function foo(string $k, string $v):void { echo "{$k}={$v}\n";}// foreach ($a as $k => $v) {// foo($k, $v); // 失败, 因为在 foo signature 的要求之下 第一个参数应该是 string// }foreach ($a as $k => $v) { foo((string)$k, $v); // OK}// https://twitter.com/FredBouchery/status/1410570286337085440// https://twitter.com/exakat// https://phpstan.org/r/78d9db49-1684-4149-85e6-391ddde26411// 这个其实波及到 array key 原理了(某个机制会主动把 numeric string key 转化为 int key ), 属于历史包袱, 不太可能扭转// https://stackoverflow.com/questions/4100488/a-numeric-string-as-array-key-in-php这里谈到了, 的机制 ...

August 18, 2021 · 1 min · jiezi

关于心得:近期个人记录

博客的更新也会随着温习逐渐开始!夏令营陆陆续续完结了,大概在7.21就完结了。明天是7月的最初一天,从夏令营完结到明天也算是躺尸了10天了,这几天齐全沉迷在娱乐中。眼睛在手机、平板、电脑和电视之间来回切换,说实话,这样的生存久了之后还挺累的,尤其是对身材和眼睛的挫伤比拟大。我感觉我最近腰的左部有轻微疼痛,视力仿佛也上涨了一些,看货色不太利索。原本打算去宁波参观一趟浙软回来就开始奋斗起来了,然而当初疫情貌似又重大起来了,去宁波的事件可能又得搁置一段时间了。 那么,是不是又该奋斗起来了呢? 说起来,感觉还是蛮累的,在奋斗之前,想总结一下夏令营中存在的问题和有余。通过夏令营,我大略明确了各个学校考核的大抵流程:机试、面试,存在大抵以下一些问题。 机试能力不够,可能有很多起因。自我感觉是题目太长比拟容易打退堂鼓。之后得着重练习一下算法和长题目的问题。面试次要波及数学类和专业知识类。 数学类有线性代数、概率论为主。线性代数的一些关联性问题温习有余,比方南大CS问了特征向量和特征值与系数矩阵的秩之间的关系,本人会比拟懵,还是因为之前的温习又忘记了很多,所以之后的温习尽量去画常识图谱,搞清楚常识和常识之间的关系,这样不易忘记。 对于专业知识类的温习,是对一些总结性的常识温习不全面,比方南大CS面试问了共享存储区和消息传递通信形式的优缺点,这类总结性的知识点如果本人去总结的话,我集体感觉是比拟艰难的。所以前期一方面是从参考书中取得一些总结性常识,进行整顿。另一方面还得上网搜寻常见面试的业余知识点。还有一个是后期温习的时候,有一些知识点是主动跳过了,比方数据结构中的一些排序算法,希尔排序没有很全面的温习,还有网络中的一些内容,这次温习须要把这些内容补上。 对于英语口语的进步,当初遇到的英语面试的主题次要有, 自我介绍。这里我感觉次要考查晦涩度和发音,问题不大。问问题式。个别的问题都能够提前笼罩到,问题不是很大。我被两次问到“你最喜爱的课程?”。凋谢辨析式。比方同济英语面试是问了“运气和实力哪个更重要?”,感觉只须要有一点的观点输入,并且用英文表达出来,还比拟欠缺。因为观点是凌乱的,脑中的中文表述词汇是高级的而英语表述进去的词汇无奈达到。解释问题式。南大CS让我用英文解释深搜。和第三种有点像,须要解释某一个事物,而脑中是凌乱的。那我集体感觉,如果是解释算法的话,尽量用分步的形式来进行,就像咱们常见的形容一个算法流程1.2.3...这样进行。 比方深搜的话, 判断以后节点是否为空,若为空,则返回上一层(以后节点的父节点)。若不为空,判断以后节点是否被拜访,若曾经被拜访了,则返回上一层(以后节点的父节点)。若没有被拜访,则顺次搜寻以后节点的孩子节点。将以后节点置为被拜访的状态。这样思路比拟清晰,表述的时候也比拟容易,倡议对所有常见算法都做一个中文分步形容。 所以当初练习英文的形式是加强本人对形容、解释某件事物的能力。能够借鉴之前油管博主的办法,之后能够尝试一下。 最初是我的项目。目前来看,我的项目问题问的最多的还是强化学习。我集体感觉强化学习算法比拟好了解,可能老师也这么感觉吧,在这块理解的比拟多。那么我的想法是把重点放在强化学习和Bert模型上,做一个常识图谱,对于外部的原理进行一个分析和整顿。问题大抵这么些,至于布局,我的想法是先进行专业课、英语、机试的协同温习。而后整顿一些我的项目。最初的工夫整顿一下数学。 专业课:组成原理、操作系统、网络、数据结构。 加油!争取胜利上岸!

July 31, 2021 · 1 min · jiezi

关于心得:面试记录

上周加入了zy的一面,尽管面试官比拟nice,感觉也不算太糟,还是在两天之后收到了没通过的告诉。 总结这次面试,突击温习了3天的工夫,很多知识点囫囵吞枣,在面试中,往往只知其然,不能深刻,或者不敢大胆地表述进去,想必也是这点造成了最初地不通过。面试过程中,面试官始终在疏导,很多问题在疏导下也都答出来了;由此看出,温习时,还是要多思考,而不是停留在记得,多问为什么答复开源库的时候,尽管记得retrofit的原理,然而还是没有敢说,对于开源库还是应该要手动写进去,能力体会其基本。Activity生命周期的问题,属于对基础知识的使用,须要对常识进一步把握的根底上进行实际。通过面试及温习有一些播种,晋升了常识的广度也对一些知识点加深了了解,包含git的常识、组件化等;同时发现了一些可供答复的难点等(充分体现了博客的重要性)。温习须要改良的点次要是:对于知识点要进行深刻思考,同时也要多实际还有一个比拟大的问题是温习往往都是长期抱佛脚;其实从年初HT的面试后,有充沛的工夫进行温习,然而最终还是什么也没有看到位,须要调整心态。针对这一点,须要好好总结,会另写博客。针对面试中的题目也会独自进行总结写博客,进步本人。

August 13, 2020 · 1 min · jiezi

大集市与大教堂节选-如何成为一名黑客

《大集市与大教堂》节选这里节选中文版的 附录: 如何成为一名黑客本文是由著名的开源旗手 Eric S.Raymondond 所著。本书英文版写成于2001年,中文版出版于2014年。文中的部分链接已经不可访问了,但为了维护原文的完整性,还是将它们放了进来。以下是原文 A.1 为什么写下此文作为“黑客行话”(Jargon File, http://www.tuxedo.org/jargon/)及其他几篇流传较广的类似文章的作者, 我经常收到热情的网络新手的邮件, 他们会问: “我怎样才能成为黑客高手? ”相当奇怪的是, 我没有看到任何FAQ或者网络文章谈及这个重要问题, 所以我来写一篇。 如果你读的是离线版本, 你可以在这个网址找到它的最新在线版本: http://www.tuxedo.org/~esr/faqs/hacker-howto.html 注意: 本文最后有一个FAQ(常见问题解答) , 在向我发邮件提问之前请先读它两遍。 A.2 什么是黑客在“黑客行话”这篇文章里, 有一堆关于“黑客”这个术语的定义, 大多数都涉及“技术高超”、 “热衷于解决问题”和“突破极限”这样的特点, 如果你想知道如何成为一名黑客, 其实真正重要的只有两点。 长期以来, 存在一个崇尚共享文化且成员都是编程专家和网络高手的社区, 其历史可以追溯到数十年前第一台分时小型机诞生和ARPAnet还处于最早实验期的年代。 这个社区的成员创造了“黑客”一词, 黑客构建了互联网, 黑客造就了现如今的UNIX操作系统, 黑客运转起了Usenet, 黑客让WWW发挥作用。 如果你是这个文化的一部分, 如果你对这个社区有贡献, 社区中其他人知道你并称你为黑客, 那你就是一名黑客。 黑客精神并不局限在软件文化中。 人们会把黑客态度用在其他事情上, 比如电子或音乐。 事实上, 对任何科学和艺术, 在其最高水平的活动中都可以发现黑客精神。 软件黑客若是识别出其他领域的同道中人, 也会称他们为“黑客”。 所以有人说黑客的天性其实是独立于他们所从事工作的。 在本文余下部分中, 我将着重讨论软件黑客的技术、 态度及其文化传统, 正是这一文化产生了“黑客”一词。 有一群人高调声称自己是黑客, 但他们并不是。 这些人(大多是些毛头小子) 的主要目的是攻入他人计算机或者破解电话系统。 真正的黑客称他们为“骇客”(cracker) ,而且完全不想搭理他们。 多数真正的黑客认为, 骇客懒惰, 缺乏责任感, 而且不是很聪明, 如果你的目标是能够攻破安全系统, 那不会让你成为黑客, 就好比学会热线(hotwire) 发动汽车并不会让你成为汽车工程师一样。 ...

August 19, 2019 · 3 min · jiezi

一位人物

如果我被问到有没有一个真心崇拜的技术人?19年以前,我会告诉你没有。 听讲过一些厉害的人,网络上的大咖也好,业务大牛也好,这些人尽限于传说,对我来讲没有深刻具体的感知。现在,有那么一个活生生的人的在我的工作环境中发光发热。至此,如果有人问我类似的问题,我会告诉他说:有,他就是这样子的: 全栈有人标榜自己是一个全栈工程师,招聘信息里也偶尔有看到招聘全线工程师。一般来讲,全栈的招聘不外乎 前后端通吃、即能写客户端(android/ios)又能写java后端、既能...又能...。 后端强前端弱但是能做事,也是大多数全栈的基本要求。但是这位人物把全栈推上去绝对高度: 他的能力不限于: c/c++、java、python、 erlang/elixir、javascript/typescript、lua、shell、vb(他说他喜欢用来做界面,完爆现在的所有工具)、前端开发、后端开发(长连、短连)、客户端开发(android/ios)、运维发布系统。以上提及的内容全部有生产环境有工程实践(可以说团队里的所有代码其实都是他写过的,有问题找他都能解答、解决),更别说一些基础<计算机网络>、<操作系统>、<计算机组成原理>、<数据结构> 等就是达到了熟背于心的程度了。 事例一:离职同事写的给导师的评语:https://www.zhihu.com/questio... 事例二:刚到团队都会经历布署开发环境的过程,团队的布署很麻烦(弱弱地说一句是luan)。每个新人都会遇到各种各样的布署问题,而且每个人还不一样,我也曾掉进了这个坑里。我找到了这位人物,经过一顿折腾(调试shell脚本)最终找到了问题的真因(布署系统依赖root权限,rabbitmq刚好不是在root下安装导致的)。 事例三:ios同学要离职,他手上的还有个windows sdk的task还没做完。这位人物接手,在deadline那天晚上搞到夜深把task结了。 事例四:我曾听到过 他大声说: 1、在当年的蛮荒年代,他撸出了一个发布系统。(大约在发布署统还没真正普及的年代吧,基于ansib le)。2、海外账号的一个deadline,任务是android的开发。刚好是放三天小长假后的第一天(他还请了假倍家人去游玩)。节前最后一天,他把代码基本写完,节后交给android同学接锅,顺利完成交付。3、4、。。。。。陆续补全。 精力一般人到了晚上工作效率会变得低下,一般人长期加班会出现各种不适应。在他身上是不存在的。印象中,从来都是我下班比他早。印象中,他可以怼完需求、怼完设计依然精神满满地写代码。 事例一记忆力事例一他可以把几年前的代码实现的细节清晰地表述给你听。 事例二他可以把专业知识的细节完整的讲述给你听。 游戏控体验出的是一种热爱! 事例一某个晚上,跑到一台台式机,打开古墓丽影十,开玩。口上念叨着:不玩游戏,人生还有什么意义。 事例二梦想着等孩子长大了,和孩子一起开黑。

June 22, 2019 · 1 min · jiezi

高考七年后工作三年后的感悟

这是一篇写在我的微信公众号【若川视野】的文章,同时也发布在segmentFault。 高考七年后、工作三年后的感悟又一年高考结束了。转眼高考过去七年了,工作了三年。很多认识的同届的朋友同学研究生也毕业了,在大学认识的最后一批学弟学妹也毕业了。算是一个阶段结束了。 高考很大程度决定人生轨迹七年前(2012年)坐在自己家乡的小县城考场里,写着语文试卷。前面花的时间比较多,留下写作文的时间不太多,有些紧张。后来考数学时,也时不时有想着语文可能没考好。现在想想那时有着40多分钟就能写出不少于800字的作文,放在现在这能力有所退化。 高考出分数后,自己研究和分析买的报考指南书籍。选择了一些专业和学校,凭着对这些专业和学校的简单认知,最后在网吧里报考了几所学校和专业。最后录取到了信息管理与信息系统这个专业。 那个暑假,想想自己好像从来都没有离开过所在的小县城,对大学是怎么样的,是不清楚的。所以对即将到来的大学生活特别憧憬。就好比在大三即将毕业时,对社会和职场也可以说是所知甚少。 2015年6月3日,课题组老师请我们同学三人和一位当时在深圳实习回校的同专业的大四学长,去他家吃饭。就跟学长闲聊了一些工作类的话题,大概意思就是压力还是挺大的,深圳租房也要一千多,房间还不大等等。(因为2013年大一参加过学校的招聘会,看到开发类应届生薪资5、6K,当时觉得还不错。)当听到租房就要一千多,顿时感觉对社会和职场知道的太少了。但在那个暑假确定了未来工作的方向。之前写过一篇文章:我是如何踏上前端这条路的 那时我们几个人觉得,可能大学班上没有几个人会从事本专业相关的工作。但事实上毕业后还是有一大部分人选择了IT互联网行业。因为毕竟真的没有太多选择。我知道的很多名校毕业生也从其他行业转入互联网行业。 回过头来看,高考其实挺重要的。至少决定了未来四年在哪个城市跟哪些人一起学习,很大程度决定工作的方向。虽然很多人毕业多年后,不一定会从事自己所学专业相关的工作。 小时候也或多或少听到过一些读书无用论的话语。但工作三年后,发现行业知名大佬、公司领导等多数出自一流大学。一流大学毕业生大概率进入一线公司。那么一般大学的毕业生有没有机会进入一线公司,也是有的,毕竟有一部分人虽然在一般大学,但努力程度和能力会超越大部分人。放在没有互联网的时代,可能获取知识真的很难。而现在互联网时代不缺好课程好资料,可以很大程度上帮助到一部分人学习和成长。有张图可能可以很好的表达这一情况。 考研现在再看考研,考研是提升眼界和视野比较好的方式之一,研究生还有一定的留在高校工作的机会,而本科生没有。双非院校,即使是计算机类专业,能考研尽量考研。2017年时和来杭州出差的大学老师聊天。作为复旦大学的博士老师建议,如果觉得写代码遇到了成长瓶颈,不妨再考个研,读个好学校,比如复旦交大等。这样毕业出来平台就不一样了。(当时想着,果然是复旦大学,随口说出来就是复旦交大之类的院校,毕竟是很难考上的。) 归零从小学到大学,大学到工作。每一次都是一次归零,一次重新开始。有人说:毕业前觉得自己有无限可能,毕业后回到了现实社会。投身IT技术岗,要早做打算。常言道:机会总是留给有准备的人。问过一些学习成绩比较好的学弟学妹,他们都感慨没有学好专业课。主要还是实践不多。导致跟企业要求相差比较多。但以往各方面就表现不错的人,往往能够快速适应新环境,同样做到表现不错。 看着微信朋友圈,往往容易陷入羡慕别人的怪圈这时候想起一个词语叫做幸存偏误。这时参看百度百科:指的是只能看到经过某种筛选而产生的结果,而没有意识到筛选的过程,因此忽略了被筛选掉的关键信息。朋友圈动态也是大家筛选过才发出来的,一般来说朋友圈都是发好的一面,正能量的。以致于很多人都羡慕别人,就可能会觉得自己混的最差。我也会羡慕我的一些985、211高中同学和关系比较好读研究生的同学。正所谓:城外的人想进城,城里的人想出去。但有些事情只有自己亲身体会,才会更加深刻。纸上得来终觉浅,绝知此事要躬行。有段时间,各种文章分析拼多多号称的三亿用户从何而来。有人就说大学本科生仅有中国人口的4%。虽然大城市的人虽然很少用拼多多,但我们并不全面的了解中国。 **我们都知道中国有960平方公里的土地,但我们对她有多少城市,县,镇,村并没有完整的概念。有统计表明,中国约有300个“城市”,2856个“县”,41658个“乡镇”,662238个“村”。**而我就是来自60多万“村”的一员。 人脉圈子工作后,人脉圈变窄。这估计是很多职场人共识之一。工作所在城市即使有同学朋友,一年聚的次数最多也就1、2次。有距离的原因也有时间的原因。从小学到大学毕业,听别人说一旦毕业班上同学再也聚不齐了。像是危言耸听。但到现在为止,好像真是这样,全班人没聚齐过。大学算是认识挺多人,但各奔东西,相忘于江湖,是我们共同的结局。圈子窄主要原因大多数职场人,打交道的人只是所在公司团队的人,认识的都是圈内的人。人脉圈子有时候很有作用,这就需要平时有些积累。 职场的困惑职场的困惑往往是因为自身能力不足。想着改变,又无力改变。想起一次一群人聊天,问到大家的理想是什么,基本都回答没什么理想,我也是如此。很多人对自己未来规划和职业规划都是不明确的,或者说根本不是很了解自己。导致当下想改变,又不知道怎么改变,陷入恶性循环之中。求变之前需要认识自己,问清自己想要什么,想做成什么样的人。为了目标,自己能做到哪一步,有了一个大目标,制定确实可行的方案,根据自己执行情况,不断修正方案,不断得到正反馈,这种感觉很好。有那么一句话叫做不逼下自己,都不知道自己可以有多优秀。培养自己良好的习惯,不断的了解自己,定目标,刻意练习,得到正反馈,良性循环,提升自身的各方面的能力。 未来还面临着很多选择过去的20多年,有很多选择,选择大学和专业,选择考研与否,选择城市和行业,选择公司。未来还有很多选择。有时想到未来就会很焦虑,有种需要和时间赛跑的感觉。经常被朋友和同事问到,会一直在杭州待下去吗?此类问题我一般是这么回答,只能说最近几年会一直在杭州。随着大学毕业时间越长,越来越多可能影响一生的问题需要考虑。 最后附上毕业三年每年的年度总结文章和工作一年的感悟文章。2016年度总结,毕业,工作工作一年后,我有些感悟2017年度总结,一如既往2018年度总结,平淡无奇 关于作者:常以若川为名混迹于江湖。前端路上 | PPT爱好者 | 所知甚少,唯善学。个人博客segmentfault前端视野专栏,开通了前端视野专栏,欢迎关注掘金专栏,欢迎关注知乎前端视野专栏,开通了前端视野专栏,欢迎关注github,欢迎follow~

June 13, 2019 · 1 min · jiezi

超级白中白的学习进程1

String类、Arrays工具类、Math工具类 前言各位大牛人物,本人是一个零基础学起来的小白,大学之前对于Java没有任何的接触,如今决定认真学习Java,目的是要把自己的头发掉光位置!今天写这个的原因就是想把自己的学习过程记录下来,算是巩固练习。如果文中有什么不对的地方,还请各位不吝珠玉。在下一定有则改之无则加勉,希望能够紧跟大牛后面学习!本文是本人第一次发表,如果有什么错误的地方敬请谅解!1、 String类String类在我之前的认识里就是“String str = "String"这样的简单创建方式,但是实际上有3+1种方式进行创建。首先我们都知道字符串就是把char数组,这样就引出来了第一种创建方式: char[] c = {‘a’,‘b’,‘c’}; String str1 = new String( c );然后就是计算机最底层的基础就是字节码,所以根据字符串也是可是创建出String对象:byte[] b = {‘97’,‘98’,’'99};String str2 = new String( b);还有一种就是什么都不写的:String str3 = new String();最后一种就是最常见也是使用最多的:String str4 = “abc”;需要注意的是:str1.equals(str2)是true,而str2.equals(str4)、str1.equals(str4)是false。虽然str4和其他显示的内容一样,但是他们指向的地址值是不一样的。2、Arrays工具类Arrays工具类主要学习了toCharArray()(字符串转换 数组)、indexOf(char)(获取指定元素最先出现的位置,如果没有该元素,则返回-1)、charAt(int)(获得指定索引位置上的元素 )、substring(int)(截取指定元素包扩该元素后面的元素,左闭右开区间)这四个方法。用法分别如下:1、String str = “String”;//创建一个字符串char[] array = str.toCharArray();//调用方法;2、int index = str.indexOf(“r”);//输出23、char c = str.charAt(2);//输出r4.1String str2 = str.substring(2);//输出ring4.2String str3 = strsubstring(2,5);//输出rin 3、Math类Math类学习了3个比较常用的方法,Math.abs(int)(求绝对值)、Math.ceil(double)(向上取整)、Math.floor(double)(向下取整)、Math.round(double)(四舍五入),用法如下:1、int i = Math.abs(-1);//输出12、double d = Math.ceil(3.1);//输出43、double d2 = Math.floor(3.9);//输出34、double d3 = Math.round(3.5)//输出4 4、 以上便是我今天所学的内容,全都是我自己的理解,难免会有一些理解不够或者理解错误,所以本文仅仅作为参考。我也希望能够得到各位大神的指点,可以少走点弯路,谢谢!作者:ZHC_YTYQ 来源:CSDN 原文:https://blog.csdn.net/ZHC_YTY... 版权声明:本文为博主原创文章,转载请附上博文链接! ...

May 11, 2019 · 1 min · jiezi

浅谈JS中的数据类型转换

关于JavaScript中的各种数据类型的简单转换。转换为字符串toString可以用toString这个API将其他数据类型转换为字符串,其中也有一些特例。var a = 1;a.toString;//“1"var b = true;b.toString;//“true"将数字和布尔值转化为字符串。var c = null;c.toString;//Uncaught TypeError: Cannot read property ’toString’ of nullvar d = undefined;d.toString;//Uncaught TypeError: Cannot read property ’toString’ of undefinednull和undefined并没有toString这个API,所以会报错。不可以这样使用。var obj = {age : 18};obj.toString();//"[object Object]“object的toString方法并不能得到你想要的结果。除非你自己设法去编写一个自定义函数。全局方法使用全局方法window.String,等同于xxx.toString。window.String(1);//“1"window.String({});//"[object Object]“null和undefined也可以使用这个全局方法。window.String(null);//“null"window.String(undefined);//“undefined"console.logconsole.logAPI可以将数据输出为字符串。console.log(1);//1这里console.log中的1其实是"1”,等同于console.log((1)toString);//1输出结果的1其实也是"1”,这是在Chrome测试台的输出结果,没有按规则显示而已。在很多地方,如果需要字符串的数据,会自动调取这个API。常规转换最简单的转换方式,与空字符串’‘相加+1 + ‘’//“1"true + ‘’//“true"var obj = {}obj + ‘’//"[object Object]“null + ‘’//“null"undefined + ‘’//“undefined”+如果左右两边有字符串,那总是会尽可能把结果变为字符串。‘1’ + 1//“11”(1)toString() + ‘1’//“11"这样使用会出现意想不到的结果。两者是等价的。转换为布尔值全局方法window.Boolean方法window.Boolean(0);//falsewindow.Boolean(1);//truewindow.Boolean({});//true注意要区分空字符串和有空格的字符串。window.Boolean(’’);//falsewindow.Boolean(’ ‘);//true如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面七个值被转为false,其他值都视为true。0nullundefinedNaNfalse’’““又叫做falsy值。是在Boolean上下文中认定可以转化为false的值。常规转换!!取反两次,对应的布尔值不变。!!0//false!!null//false!!{}//true转换为数字大概有几种方法window.Number(‘105’);//105window.parseInt(‘105’,10);//105//10表示进制window.parseFloat(‘1.05’);//1.05'105’ - 0;//105+ ‘105’//105+ ‘-105’//-105- ‘105’//-105- (- ‘105’);//105关于parseInt若不写明进制,则默认为十进制。parseInt(‘011’);//11parseInt(‘011’,8);//9而且从第一位开始返回,若遇到无法返回的值,则自动结束。若一位也无法返回,则为NaN。parseInt(‘1s’);//1parseInt(‘ss’);//NaN

December 19, 2018 · 1 min · jiezi

浅谈JS中的数据类型

JS中的数据类型。什么是数据类型?和我们平时交流一样一样。什么是汉字,什么是拼音,什么是标点符号,什么又是现在流行的表情包?类型,可以是语言的分类,也一定是理解一门语言或了解一个事物的基础。JavaScript中的每一个“值”,都是一种数据,属于一种数据类型。我们常用的数据类型,有六种:number:数值,包括整数与小数string:字符串,理解为文本boolean:布尔值,只有两个值:true和false,分别表示真假undefined:未定义或不存在null:空值,此处为空object:对象,各种值的集合在ES6中引入了第七种类型的值:symbol数值、字符串和布尔值一般被称为原始类型,是最基础的类型;对象被称为合成类型,是比较复杂的类型。undefined和null是特殊的值。数值JavaScript的数值有许多种表示类型。常规的十进制:首数字不为0。 520二进制:前缀为0b或0B。 0b101八进制:前缀为0o或0O。 0o363十六进制:前缀为0x或0X。 0xdd科学计数法:字母e或E后面接整数表示指数部分。314e-3NaN是一种特殊的数值,表示"非数字"。字符串字符串就是排在一起的多个字符,用英文双引号"或单引号’表示。双引号内部可以引用单引号,单引号内部也可以引用双引号。当引号使用出现歧义时,比如单引号中的单引号,双引号中的双引号,就要用到转义。反斜杠 \ 可以用来表示一些特殊字符,被称为转义符。常见的转义符有:\n:换行符\t:制表符\r:回车键\b:后退键':单引号":双引号\:反斜杠null 和 undefined对于null和undefined,都可以表示没有,含义相似。这也与历史上JavaScript的设计有关。大致可以像下面这样理解。null表示空值,即该处的值现在为空。比如调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。undeined则表示此处未定义,不存在。布尔值true为真,false为假。布尔值运算关系有 “与”:&&和 “或”:||,真值关系符合标准真值表。对象这是JavaScript中最核心的概念,也是最复杂的数据类型。对象就是一组“键值对”即key-value的集合,是一种无序的复合数据集合。var obj= { k1 : “My”, k2 : “Love”, k3 : 18, k4 : undefined, k5 : {k6 : “998”}};每一个键值对用逗号,隔开。冒号左边为键名,默认为字符串,加不加引号都可以。但若键名不符合标识名规则,则必须加上引号,否则会报错。 “3+4” “678xyz"对象的每一个键名又称为“属性”,它的“键值”可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。obj.k1;obj[“k1”];如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。这种方法不仅可以用来读取值,还可以用来赋值。var obj = {};obj.k1 = “998”;obj[“k2”] = undefined;可以使用Object.keys来查看一个对象本身的所有属性。var obj = { k1 : “uux”, k2 : 18};Object.keys(obj);//[“k1”,“k2”]可以用delete命令删除对象的属性,删除成功后返回true。var obj = { k1 : “123”, k2 : “234”};delete obj.k1; //trueobj.k1; //undefinedObject.keys(obj); //[“k2”]in用于检查对象是否包含某个属性,如果包含就返回true,否则返回false。var obj = {};“k1” in obj; //falsefor…in循环用来遍历一个对象的全部属性。var obj = { k1 : “Male”, k2 : 18, k3 : undefined};for (var i in obj) { console.log(“Key:”, i); console.log(“Value:”, obj[i]);}// Key:k1// Value:“Male”// Key:k2// Value:18// Key:k3// Value:undefinedtypeof运算符typeof运算符可以返回一个值的数据类型。typeof 998; //“number"typeof “998”; //“string"typeof true; //“boolean"typeof undefined; //“undefined"typeof {}; //“object"var a = {};typeof a; //“object"特例:function xxx() {};typeof xxx; //“function"函数返回function,但是我们要注意并没有function这一数据类型。typeof null; //“object"这只是一个BUG,是由历史原因造成的。typeof []; //“object"空数组的类型也是object。typeof document; //“object"typeof window; //“object”…参考文献:《JavaScript教程——阮一峰》 ...

December 18, 2018 · 1 min · jiezi