Javascript语法和类型

前端7班_leec

javascript-type-relationships

Javascript语法借鉴于 Java,Awk,Perl,Python,并且是大小写敏感的,使用Unicode字符集编码。在Javascript中,指令叫做语句,语句用分号;隔开,语句可以不加分号(不推荐)。

注释

注释的规则跟C++和其他语言类似,单行注释用//,多行注释通过/*注释内容*/

注释

声明

** var **
声明一个变量,在声明变量的同时可以赋值(可选)
** let **
声明一个块级作用域局部变量,可以赋初始值(可选)
** const **
声明一个只读的命名常量

变量

变量作为引用值的一个标识符(符号),标识符遵循以下规则:

以字母、下划线或者$符号开头,可以使用Unicode字符集;标识符大小写敏感,即foo、Foo、fOo是不同的标识符

声明变量

你可以通过以下方式声明变量:

  • 使用关键字var, 例如:var x = 42;这种方式用来声明全局变量和局部变量;
  • 简单地直接赋值,如:x = 42; 这种方式声明了一个全局变量(不推荐使用);
  • 使用关键字let,如:let y = 13,被用来声明一个块级作用域局部变量;

使用var或者let进行变量声明时没有赋初始值,变量将会得到undefined值,获取未定义变量的值将报错(thrown ReferenceError
exception),如:

var a; console.log("The value of a is " + a); // logs "The value of a is undefined" console.log("The value of b is " + b); // throws ReferenceError exception

在数值计算中,undefined值参与运算将被转为NaN:

var a; a + 2; // Evaluates to NaN

在数值计算中,null值参与运算将被转为0:

var a = null; a + 2; // Evaluates to 2

变量作用域

在函数作用域外面定义变量,将得到全局变量,在函数内定义变量将得到局部变量。在ES6以前Javascript没有块级作用域,使用let声明变量将得到块级作用域局部变量;

if (true) { let y = 5; } console.log(y); // ReferenceError: y is not defined

变量提升####

变量提升:引用其后的变量声明不报错,声明的变量被提升到函数开头或者作用域起始位置,被提升的变量会返回undefined值:


variable hoisting

因为变量提升,所有var声明语句应该尽可能放在函数定义的顶部

全局变量

事实上,全局变量是全局对象的属性,在浏览器中,全局对象是window,所以你能通过window.variable调用。

常量

使用关键字const定义常量,定义常量必须初始化,其作用域跟let一样,不能跟函数或者变量重名:

declare a constant with the same name as a function or variable

数据结构和类型

数据类型

最新的ECMAScript标准定义了7种数据类型:

  • 6种基本数据类型:
    • Boolean. true和false;
    • null.
    • undefined.
    • Number.
    • String.
    • Symbol.(ES6新类型)
  • Object对象

数据类型比较

Javascript是动态类型语言,声明变量时不用指定类型。
在数值计算中,+运算符的问题在于它可能有两种含义。如果把它用在数字上,它意味着把两个数字相加,但是如果把它用在字符串上,它意味着把两个字符串连接或者拼合在一起。Javascript处理字符串连接的优先级高于数字求和。 Javascript从左至右遍历+运算符,并分别根据它们的含义决定是相加还是连接。

x = "The answer is " + 42 // "The answer is 42" y = 42 + " is the answer" // "42 is the answer" "37" - 7 // 30 "37" + 7 // "377"

字面量

Array 字面量###

var coffees = ["French Roast", "Colombian", "Kona"];

额外的逗号

Array字面量中最后的逗号会被忽略,其他空位上的分号会被解析成undefined,最好显式声明undefined:


Extra commas in array literals

本文翻译整理自:
MDN **转载请注明出处 **

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容