资讯专栏INFORMATION COLUMN

JavaScript编程全解 —— 基础

CoreDump / 2097人阅读

摘要:函数式编程最后介绍一下函数式编程。函数式编程是一种历史悠久,而又在最近颇为热门的话题。函数式编程在面向对象一词诞生以前就已经存在,不过它在很长一段时间里都被隐藏于过程式编程面向对象也是过程式编程的一种的概念之下。

2.1 JavaScript特点 总结以下几个特点:

解释型语言

类似与C和Java的语法结构

动态语言

基于原型的面向对象

字面量的表现能力

函数式编程

解释型语言:
如Python、JavaScript、Perl、Shell......与之相对的就是编译型语言了,如C/C++等。但是就目前的计算机科学发展来说,很多人认为单凭从解释型与编译型两者来区分编程语言已经力不从心了。虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器.......
解释型语言直接在运行环境中执行代码(或者说动态类型语言),一般来说,与编译型语言相比,解释型语言开发更为容易。特别是JavaScript,其运行环境是已经普及的浏览器,所以能够很容易尝试开发。
劣势在于:运行速度慢于编译型语言,当然这也是理论上的情况。现在,解释型语言和编译型语言这件的界线越来越模糊。编译型语言在有了足够快速的编译器和功能强大的开发环境之后,也能实现和解释型语言相匹敌的开发难易度。同时,解释型语言由于使用了JIT(Just In Time)这种能够在运行中进行编译的的技术,使得运行速度得以改善。
类似于C和Java的语法结构:
JavaScript的语法结构与C和Java相似。JavaScript同样有if或while这类关键字,其语法结构也与C和Java类似。他们乍一看很像,因此有这些语言开发经验的人很容易就能熟悉JavaScript。不过需要注意的是,它们之间的相似性其实并不如表面看起来的那么强。

PS:我既没接触过Java也没敲过C,这种情况对于我想必是崩溃的!:)不过,众所周知JavaScript是弱类型语言,语法规则不如强类型语言那么严格。

动态语言:
JavaScript与C和Java所不同的一点在于,JavaScript是一种动态语言,将在之后详述。但从代码角度看,动态语言的变量和函数是不指定返回值类型的。(WTF?)。JavaScript之所以被设计成动态语言,和选择将其设计为解释型语言的理由一样,都是优先考虑了开发难易度的结果。对解释型语言以及动态语言的特性的喜好虽然见仁见智,但语言本身没有高下优劣之分。
优秀的程序员不会吹嘘语言的先进性,因为在他们眼力,使用工具的是人。可以把这句话看成是对上述末尾的解释?* v *
基于原型的面向对象:
解释型语言并不少见,现有的较为知名的脚本语言大多都属于这一类型。不过基于原型的面向对象特性,使得JavaScript有点不同。基于原型的面向对象和基于类的面向对象特性是有所不同的......JavaScript并不是第一个采用基于原型的面向对特性语言,但可以说是最为著名的。

目前我也正在理解面向对象编程这一编程术语,很多人把它看成一种编程思维、构思程序思维。以后如果充分理解了会在写一些个人见解吧:)

字面量的表现能力:
字面量的表现能力是JavaScript开发生产力得以提高的一个重要原因。在Perl之后,很多语言都提供了功能强大的字面量功能。虽然其中表现突出的不止JavaScript一种,不过由于它的字面量功能相对来说非常优秀,所以作为语言特点之一列举于此。
函数式编程:
最后介绍一下函数式编程。函数式编程是一种历史悠久,而又在最近颇为热门的话题。函数式编程在面向对象一词诞生以前就已经存在,不过它在很长一段时间里都被隐藏于过程式编程(面向对象也是过程式编程的一种)的概念之下。但是这种状况正在改变,JavaScript就是改变这一过程的一部分,尽管JavaScript能直接支持的程序设计范式在本质上还是过程式的,但由于具备了匿名函数,可以把函数作为对象来使用,所以同时也能够支持函数式编程。
2.2 关于编排格式 2.3 变量的基础 2.3.1 变量的使用方法:

变量的作用是给某一个值或者对象标注名称。
使用关键字 var 就可以对变量进行声明。

var foo;

现阶段先理解为变量名可以使用任意的英文字母即可,后面会更近一步进行说明。通过赋值运算符 = 为变量赋值,左值:变量名 右值:值。

foo = "abc";

变量的声明和赋值也可同时进行。在声明变量同时为其赋值是一种较好的编程风格。(不是习惯么?)

var foo = "abc";

JavaScript中的变量没有变量类型(int,float)。因为没有变量类型,所以对于同一个变量。既可以赋值字符串,也可以是数字。不过通常情况下,以这种方式使用变量并不是好习惯,所以尽可能避免这样的代码。

var foo;
foo = "abc";        // 字符串"abc"赋值给变量foo
foo = 123;          // 将数值123赋值给变量foo

在表达式中写上某个变量名后就能获取该变量的值。(或者说把该变量作为右值使用?)

var n = 7;        // 将数值7赋值给变量n
n+1;              // 获取变量n的值,并加上1
8

严格来说,语句中的变量,对于左值和右值是有所不同的。左值指的是赋值表达式 = 左侧的变量名,右值指的是赋值表达式 = 右侧、或是在赋值表达式之外的其他表达式中出现的变量名。右值中的变量是所要用于赋值的值,而左值中的变量则是将要被赋值的对象。言简意赅的说,对于左值和右值,将其理解为被赋值的对象和所赋值的来源即可。

声明但未进行赋值的变量,其值为Undefined(之后会说明undefined的含义),读取这类值不会引起运行时的错误。需要注意的是,大部分情况下,读取undefined值都是产生错误的根源。

斯认为:本身undefined的存在没有错误,但是存在读取引发错误的隐患。

var foo;
console.log(foo);        // 变量foo的值为 undefined

如果读取没有被声明的变量(即作为右值使用该变量),就会引发 ReferenceError 异常;如果将其作为左值使用,即作为赋值对象使用,则不会发生错误。

console.log(x);        // ReferenceError: x is not defined
2.3.2 常量

ECMAScript标准没有规定常量的声明语法。不过在JavaScript的自定义增强功能中,是可以对常量进行声明的。由于是自定义的增强功能,因此没有明确的规范。

如果需要声明一个常量,使用const关键字,可以作为常量名使用的字符和变量是相同的,不过习惯上常量名都以大写字母表示。

const foo = 7;        // 声明常量
console.log(foo);

即使给常量再次赋值,这个常量的值不会发生改变。其实,对常量再次赋值应该算是一种错误,但在实际中并不会出错,对此多家注意。

const foo = 7;        
foo = 10;            // 对常量再次赋值
console.log(foo);    // result:7

如果声明时没有对常量进行赋值,它的值就是undefined,处理方式和变量相同。

发现:如果声明常量同时没有对其初始化(赋值),则今后任何赋值都不会起作用,也就是说这个常量不被回收的话其值永远是undefined
const foo;
console.log(foo)
foo = 10;
console.log(foo)        // result: undefined
2.4 函数基础 2.4.1 函数的定义

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82543.html

相关文章

  • 《JS编程全解》—— 回调函数

    摘要:事件驱动正是一种回调函数设计模式。由于不支持多线程,所以为了实现并行处理,不得不使用回调函数,这逐渐成为了一种惯例。上面的回调函数只是单纯的函数而不具有状态。如果回调函数具有状态,就能得到更为广泛的应用。 回调函数模式 回调函数与控制反转 回调函数是程序设计的一种方法。这种方法是指,在传递了可能会进行调用的函数或对象之后,在需要时再分别对其进行调用。由于调用方与被调用方的依赖关系与通常...

    mj 评论0 收藏0
  • 全解小程序猜数字游戏 04《 程序员变现指南之 微信&QQ 小程序 真的零基础开发宝

    摘要:此时使用设置当前值中的猜测值为输入框的内容值。接着判断猜测之是否大于或者小于,因为这两者是范围之外不再进行判断,所以最开始使用进行判断不能小于不能大于以上代码中表示调用微信小程序接口弹出提示,传入的参数为提示内容。 ...

    不知名网友 评论0 收藏0
  • lisahost:美国新的全解锁原生IP 206段上架开售,支持tiktok等,季付122元起

    摘要:怎么样好不好最近美国新的全解锁原生段上架开售,支持等,原一期产品可加价更换年付免费更换,美国原生段仍有少量剩余,套餐原价基础上每月加价元可更换美国原生,更换的为纯净新分配美国段,绝对传家宝产品,支持解锁美区游戏,,等,同时支持。lisahost怎么样?lisahost好不好?lisahost最近美国新的全解锁原生IP 206段上架开售,支持tiktok等,原CN2一期产品可加价更换(年付免费...

    xingqiba 评论0 收藏0
  • JavaScript 中优雅的实现顺序执行异步函数

    摘要:顺序执行异步函数异步为带来非阻塞等优势的同时,同时也在一些场景下带了不便,如顺序执行异步函数,下面总结了一些常用的方法。 火于异步 1995年,当时最流行的浏览器——网景中开始运行 JavaScript (最初称为 LiveScript)。 1996年,微软发布了 JScript 兼容 JavaScript。随着网景、微软竞争而不断的技术更新,在 2000年前后,JavaScript ...

    monw3c 评论0 收藏0
  • lisahost:新的全解锁美国原生IP VPS;206段上架开售,美国CN2 GIA,支持tikt

    lisahost怎么样?lisahost最近美国新的全解锁原生IP 206段上架开售,支持tiktok等,原CN2一期产品可加价更换(年付免费更换),美国原生ip 163段仍有少量剩余,套餐原价基础上每月加价20元可更换美国原生IP,更换的IP为纯净新分配美国IP段,绝对传家宝产品,支持解锁美区游戏,HULU, DISNEY, StartZ, HBO MAX,ESPN, Amazon Prime ...

    FuisonDesign 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<