FW:悟透JavaScript_拔剑-浆糊的传说_新浪博客_普通网友的博客-程序员宅基地

技术标签: 算法  python  java  js  javascript  

悟透JavaScript


引子 

    编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。 

    数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。 

   你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态。在代码改变数据的同时,也会因为数据的抗拒而反过来影响或改变代码原有的趋势。甚至在某些情况下,数据可以转变为代码,而代码却又有可能被转变为数据,或许还存在一个类似E=MC2形式的数码转换方程呢。然而,就是在数据和代码间这种即矛盾又统一的运转中,总能体现出计算机世界的规律,这些规律正是我们编写的程序逻辑。 

    不过,由于不同程序员有着不同的世界观,这些数据和代码看起来也就不尽相同。于是,不同世界观的程序员们运用各自的方法论,推动着编程世界的进化和发展。 

    众所周知,当今最流行的编程思想莫过于面向对象编程的思想。为什么面向对象的思想能迅速风靡编程世界呢?因为面向对象的思想首次把数据和代码结合成统一体,并以一个简单的对象概念呈现给编程者。这一下子就将原来那些杂乱的算法与子程序,以及纠缠不清的复杂数据结构,划分成清晰而有序的对象结构,从而理清了数据与代码在我们心中那团乱麻般的结。我们又可以有一个更清晰的思维,在另一个思想高度上去探索更加浩瀚的编程世界了。 

    在五祖弘忍讲授完《对象真经》之后的一天,他对众弟子们说:“经已讲完,想必尔等应该有所感悟,请各自写个偈子来看”。大弟子神秀是被大家公认为悟性最高的师兄,他的偈子写道:“身是对象树,心如类般明。朝朝勤拂拭,莫让惹尘埃!”。此偈一出,立即引起师兄弟们的轰动,大家都说写得太好了。只有火头僧慧能看后,轻轻地叹了口气,又随手在墙上写道:“对象本无根,类型亦无形。本来无一物,何处惹尘埃?”。然后摇了摇头,扬长而去。大家看了慧能的偈子都说:“写的什么乱七八糟的啊,看不懂”。师父弘忍看了神秀的诗偈也点头称赞,再看慧能的诗偈之后默然摇头。就在当天夜里,弘忍却悄悄把慧能叫到自己的禅房,将珍藏多年的软件真经传授于他,然后让他趁着月色连夜逃走... 

    后来,慧能果然不负师父厚望,在南方开创了禅宗另一个广阔的天空。而慧能当年带走的软件真经中就有一本是《JavaScript真经》!

回归简单 

    要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript就是把数据和代码都简化到最原始的程度。 

    JavaScript中的数据很简洁的。简单数据只有 undefined, null, boolean, number和string这五种,而复杂数据只有一种,即object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。 

    JavaScript中的代码只体现为一种形式,就是function。 

    注意:以上单词都是小写的,不要和Number, String, Object, Function等JavaScript内置函数混淆了。要知道,JavaScript语言是区分大小写的呀! 

    任何一个JavaScript的标识、常量、变量和参数都只是unfined, null, bool, number, string, object 和 function类型中的一种,也就typeof返回值表明的类型。除此之外没有其他类型了。 

    先说说简单数据类型吧。 

    undefined:   代表一切未知的事物,啥都没有,无法想象,代码也就更无法去处理了。 
                      注意:typeof(undefined) 返回也是 undefined。 
                              可以将undefined赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。 

    null:            有那么一个概念,但没有东西。无中似有,有中还无。虽难以想象,但已经可以用代码来处理了。 
                      注意:typeof(null)返回object,但null并非object,具有null值的变量也并非object。 

    boolean:      是就是,非就非,没有疑义。对就对,错就错,绝对明确。既能被代码处理,也可以控制代码的流程。 

    number:      线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代和循环等。 
                      注意:typeof(NaN)和typeof(Infinity)都返回number 。 
                              NaN参与任何数值计算的结构都是NaN,而且 NaN != NaN 。 
                             
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40287292/article/details/109664095

智能推荐

Eclipse svn同步时忽略某些文件类型和文件夹_eclipse svn与资源库同步取消指定目录-程序员宅基地

项目开发中,开发人员经常用SVN来管理代码,在和服务器同步时,每次都看到一堆.class,.log,.target等文件,这样很不舒服。解决方法:打开:window-->preferences-->team-->Ignored Resource-->Add Pattern忽略文件夹:如忽略target文件夹,就Add Pattern,填入*/target..._eclipse svn与资源库同步取消指定目录

Spring Cloud教程 | 第六篇:负载均衡策略配置及总结 | Feign | Ribbon_不同的feign使用不同的ribbon的负载均衡策略-程序员宅基地

Spring Cloud教程 | 第六篇:负载均衡策略配置及总结 | Feign | Ribbon一、前言第五篇中已介绍,feign其实不是做负载均衡的,负载均衡是ribbon的功能,feign只是集成了ribbon而已,换句话说负载均衡的功能是feign内置的ribbon在实现的。因此配置负载均衡策略即为对ribbon进行配置。目前公司的生产系统负载均衡、高可用等均使用集群管理平台Ku..._不同的feign使用不同的ribbon的负载均衡策略

背包DP详解_背包类dp讲解-程序员宅基地

目录1.01背包2.完全背包3.多重背包4.混合背包5.分组背包6.二维费用背包7.经典例题1.01背包题目简介:有n个物品和一个容量为v的背包,每个物品的价值为c[i],体积为w[i],要求选择一些物品放入背包中,使物品总体积不超过v的前提下,物品的总价值最大,求最大总价值。2.完全背包3.多重背包4.混合背包5.分组背包6.二维费用背包7.经典例题..._背包类dp讲解

CITY BUS MAP-程序员宅基地

项目名称 : 城市公交查询系统项目预期目标: 本项目意在实现一个能反映实时公交信息的Android应用。初步计划实现以下内容: 1) 能够成功定位用户位置 2) 能成功检测用户附近的公交站点,并显示经过站点的路线(部分显示) 3) 通过查询目的地,推荐公交线路 4) 实时显示需要查询的路线距离本站点还有几站路 5) 根据不通路线预估到达目的地的时间 6) 在m...

mysql : You can't specify target table '表名' for update in FROM clause...-程序员宅基地

#delete的时候用in的话子查询需要使用临时表,要不然会报错:You can't specify target table '表名' for update in FROM clause...

Android EditText 的 inputType属性(键盘类型)_android edittext 键盘类型-程序员宅基地

//文本类型,多为大写、小写和数字符号。 android:inputType=”none” android:inputType=”text” android:inputType=”textCapCharacters” 字母大写 android:inputType=”textCapWords” 首字母大写 android:inputType=”textCapSentences” 仅第一个字母_android edittext 键盘类型

随便推点

kafka_2.10-0.8.1.1.tgz的1或3节点集群的下载、安装和配置(图文详细教程)绝对干货...-程序员宅基地

运行kafka,需要依赖zookeeper,你可以使用已有的 zookeeper 集群或者利用 kafka自带的zookeeper。 单机模式,用的是kafka自带的zookeeper, 分布式模式,用的是外部安装的zookeeper,即公共的zookeeper。见博客 4 kafka集群部署及生产者java客户端编程 + kafka..._elephant .tgz下载

Java精品项目源码第90期校园招聘网站平台系统_校园招聘 源码-程序员宅基地

Java精品项目源码第90期校园招聘网站平台系统大家好,小辰今天给大家介绍一个基于Dao + SpringMvc+ Jsp实现的校园招聘网站平台系统,演示视频文章末尾公众号对号查询观看即可文章目录Java精品项目源码第90期校园招聘网站平台系统难度指数(中高等)一、项目简述二、项目运行1.运行环境2.截图难度指数(中高等)提示:小伙伴有问题记得下方评论留言啦,本项目难度中等。一、项目简述This is some text!功能:用户和企业用户的注册登录,简历的筛选查看搜索,应聘信息互动等等_校园招聘 源码

LeetCode - 50. Pow(x, n)-程序员宅基地

50. Pow(x, n)实现 pow(x,n) ,即计算 x 的 n 次幂函数。解题思路: 此题属于实现基本的函数库的函数,这类型题在面试的过程中会非常常见,除了此题,还有比如实现stoi()函数。由于此题n的值非常大,因此不能用O(n)O(n)O(n)的时间复杂度解题。本质上此题在考察快速幂的解法。数学上我们有下面推论:a2n+1=an∗an∗aa^{2n+1} = a^n*a^n*a...

阿雪的学习记录|解决Linux插耳机却还在外放的问题_linux插耳机还是外放怎么办-程序员宅基地

这个题目看着就直接尬住!今天正听着洗海带呦洗海带呦,正爽,然后想去调高一点空调温度,摘掉耳机却依然听的清晰无比……天哪,我还以为是我耳机坏了不好使了所以声音小……系统音量都拖到50……直接尬住,还好当时工位上只有我寄几……一趟百度下来,同样是两句代码,做法差不多,但他们是解决没有声音的问题……我这是输出通道上出了问题。首先先检查一下你的设置-声音-输出这里,是不是这个Headphones调好了耳机还是没有声音依然在外放的话,来,打开终端sudo apt install pavucontrol _linux插耳机还是外放怎么办

linux跳板机自动登陆服务器脚本-程序员宅基地

新建login.sh脚本 脚本内容如下#!/usr/bin/expect -fset timeout 1 // 超时 等待时间set pass [lindex $argv 0] // 获取第一个输入参数 本人实际使用需要动态密码set password xxxxx //静态密码spawn ssh -p22 xxxx@xxxx // 用户名@跳板机服务器expect "passwor...

推荐文章

热门文章

相关标签