热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js为什么那么难

JS学起来困难的原因主要是js它不是一个直观的自然语言,不能看到什么就说什么。首先要会语法,语法不难,但你要能够用JS语言描述你看到的问题和需求,就非常难,这一点客观存在。
这个问题我就不等大家的回答了,相信大家也明白,我并不是闲的无聊这么问。JS本身语法并不难,它困难的地方在哪呢?主要在于以下几点:

1,怎么样去把具象的问题抽象化

就是面对一个很具体的需求时,例如时,,一个网上商城吧,它内部的各种交互纷繁复杂。那么你是如何入手去写呢?前端架构也是需要设计的,这就看你是否理解网上商城的业务,能否把各种情况都考虑到,如果出现各种问题,那么它们是如何引起的?

2,如何对于代码的复杂度的控制

经常看到有人说,不能在一个function里写超过多少行代码,但实际开发中某个单一业务的复杂度就是必须要写那么多那么多的代码。这就要求具有良好的代码书写习惯和构思,做到在单一方法中易于维护、修改、升级。

3,过往代码的含义

代码不是文字。3个月前你写的一段文章,你3个月之后再看,依然明白你写了些什么。但代码不是,很多时候不用3个月,3天之前你写的代码,3天之后你再看,你就完全不明白是什么意思了。

你看文字时,是直接读取含义。但你看代码尤其是别人的代码,(我只说我自己哈,牛人不算),多数时候要把它在脑子里翻译成中文,然后再把它们联系起来,才能明白这段代码的意思。但是,但是这段代码放在整个项目中是什么意思?谁在调用它?它是为处理什么情况而编写的?我依然是不知道的。这种情况在你加入一个已经存在的多人协作项目的时候,经常出现,你看半天都不知道别人写这段东西干嘛,然后不敢改不敢删的。

4,人脑的局限。

像你我这样普通人的大脑,基本上都很难像程序那样去处理一个N多变量的程序,无法做得到看一段代码,在脑子里把它的运算过程想一遍,就明白它是否有问题。人脑不擅长这个,就例如让你算一个288*193*435,你肯定要用计算器。咱不提那些神童,因为我们都不是。

程序要求所有的变量、代码都得是正确的,有一个错的,就是全错。但像你我这样的人,脑子里无法像内存那样去装载并模拟整个运算过程。其实就是脑子不够用,算不明白。所以需要调试嘛,需要console.log嘛,需要F5刷新看结果。所以生物的局限性导致编程天生就是困难的,这一点客观存在。

5,语言本身的问题。

就是JS它不是一个直观的自然语言。不能看到什么就说什么。首先要会语法,语法不难。但你要能够用JS语言描述你看到的问题和需求。这里就有一个适合和转换的过程。

JS语言难不难,就说这么多了,只是希望大家能明白它难在哪里。

以上就是js为什么那么难的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 如何更换一加手机的主题
    本文详细介绍了更换一加手机主题的方法,包括如何访问设置、选择不同主题模式等步骤。 ... [详细]
  • Windows 10 磁盘碎片整理指南
    针对近期多位Windows 10用户关于如何进行磁盘碎片整理的咨询,本文将详细介绍在Windows 10系统中执行磁盘碎片整理的具体步骤,帮助用户提升系统性能。 ... [详细]
  • 奔驰定理是一种有趣的数学定理,其证明通常涉及几何或三角函数。然而,是否存在一种基于向量的方法来证明该定理呢?答案是肯定的。由于面积与向量的外积密切相关,因此可以通过向量外积来证明奔驰定理,并揭示其中的倒格矢结构。 ... [详细]
  • 本文介绍了Linux内核中TCP的三种接收队列:Prequeue、sk_receive_queue和Backlog。这些队列在数据包处理过程中扮演着重要角色,帮助提高系统性能和效率。 ... [详细]
  • 利用Git GUI将本地项目同步至GitHub的方法
    GitHub作为开发者不可或缺的工具,不仅提供了丰富的开源项目资源,还极大地便利了个人项目的管理和版本控制。本文将详细介绍如何使用Git GUI工具将本地开发的项目上传至GitHub。 ... [详细]
  • 本文档提供了首次周测的答案解析,涵盖特殊符号、命令作用、路径说明以及实战练习等内容。 ... [详细]
  • 本文详细解析了汉字‘悲’在新华字典中的发音、笔画结构、常见词汇搭配及其在人名中的应用。 ... [详细]
  • 解决远程桌面连接时的身份验证错误问题
    本文介绍了如何解决在尝试远程访问服务器时遇到的身份验证错误,特别是当系统提示‘要求的函数不受支持’时的具体解决步骤。通过调整Windows注册表设置,您可以轻松解决这一常见问题。 ... [详细]
  • Node.js 断点调试指南
    本文详细介绍了利用Google Chrome DevTools和Visual Studio Code两种工具进行Node.js应用的断点调试技巧。 ... [详细]
  • 在日常运维中,频繁地对多台Linux服务器进行用户管理是一项耗时的任务。为了提高效率,可以通过编写Expect脚本来实现远程自动化操作,从而简化这一过程。 ... [详细]
  • Redis: 高效的键值存储系统
    Redis是一款遵循BSD许可的开源高性能键值存储系统,它不仅支持多种数据类型的存储,还提供了数据持久化和复制等功能,显著区别于其他键值缓存解决方案。 ... [详细]
  • 本文详细介绍了Golang中string类型的内部结构及其特性,包括字符串的定义、表示方式、数据结构以及相关的操作方法,如字符串拼接和类型转换等。 ... [详细]
  • 本文将详细探讨MySQL中较为特殊的三种数据类型:SQLTEXT、DATE以及SET,包括它们的基本用法、适用场景及一些高级特性。 ... [详细]
  • 随着自媒体行业的快速发展,市场竞争日益激烈。为了应对这一挑战,许多自媒体人转向了内容电商,试图通过直播和视频带货来增加收入。然而,这种新模式在带来机遇的同时,也伴随着一系列问题。 ... [详细]
  • 第1章选择流程控制语句1.1顺序结构的基本使用1.1.1顺序结构概述是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行 ... [详细]
author-avatar
血影修罗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有