JavaScript编程全解 —— 基本

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 函数的定义

    原文作者:Queen
    原文地址: https://segmentfault.com/a/1190000009099697
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞