JavaScript 学习笔记 since 2020.02.11

标准ECMAScript,JavaScript是一种实现标准。

JS可镶嵌在网页中

方法1:放在<head>中的<script>...</script>中

<html> <head> <script>

alert('hello this is JS');

</script> </head> <body> ...</body> </html>

方法2:

放在一个.js文件中,并在html中引用

<html> <head> <script src="...path/file.js"></script>...

(2020.02.17补 上述两种方法,JS的引用都在head中,JS文件会依次解释,在解释器对head中内容完成解释之前,html页面不会被浏览器加载和显示,这种引用会出现明显的加载延迟在有些情况下。一种更好的引用方式是在<body>中页面内容的后面引用JS文件[2]。如下:

<body>

<!--html页面内容-->

<scripts type = 'text/javascript' src = 'xxx.js'></script>

</body>

JS可写在html中,但是建议写成外部文件调用js,可以提高可维护性,亦可缓存以提高加载速度。

)

语法与Java相似,每个语句用“;”结尾,但并不严格,浏览器会在没有";"结尾的语句中自动加入,为便于阅读,建议加入。

赋值 var x = 1; //如果一个变量没有用var声明就使用,则成为全局变量;但如果在.js文件头加入字符'use strict',则在变量初始化时如未使用var,会出现

{}部分注意换行时的缩进;

注释的方式//, /*...*/;

严格区分大小写;

动态语言:类型不固定,而静态语言如Java,在初始化时需要指定类型名,并且修改值时只能在同类型值中修改。

判断两个值是否相同,使用'===',而非'=='。前者比较数据时如果类型不同则返回false,只比较同类型数据,而后者比较时会先转换类型再做比较。注意:坚决使用'==='比较数据,不使用'=='

逻辑运算:与&&  或|| 非!

数字类型不区分float和int,NaN/Infinity也是数字。注意NaN与自身的比较也会返回false,NaN === NaN返回false。十六进制: 0x...

空值是null,未定义是undefined。

JS的字典称作对象,定义形式与python相同,引用方式dict_name.feature。

字符串:特殊符号,比如",在字符中显示时需要加\,如\",换行\n等等。

字符串拼接 >>

var a = 1; var b = 'ext';

var c = a+ b + 'asdf'

字符串c的自带方法, .length(), .toUpperCase(), .toLowerCase(), .substring(start_index, end_index = last_ele), .indexOf(...返回..的首index)

数组array:

元素可修改,通过a[index] = ...的方式修改,类比Python的list。

数组定义完成了如果赋值的index超过了数组长度,则数组自动延长,没定义的indices都被定义为undefined.

a.indexOf(x)返回数组中元素x的index。

a.slice(s, e): 类似于字符串的substring功能,注意end index是e-1,这点与Python相同。

push/pop分别是向尾部添加元素和葱尾部删除元素。

unshift/shift分别是向头部添加元素和从头部删除元素。

splice(si, number, ...)是指定一个初始位置si,其后的number个元素被后面的...替换。如果不指定替换元素,则删除前面指定位置的元素。

concat([..])相当于拼接。

用符号拼接,a.join('-')

条件判断 if () {} else {}:

如果执行语句只有一条,可以去掉{},但是建议不管执行语句多少条都加{}.并不以自动缩进作为语句的语法。每条指令的结束加';',这个';'要加在{}以内。条件语句中的并列条件中间用&&而非Python中的and。

没有':'只有';'在else之前。

循环:

for (初始条件; 终止条件; 变化)  {;}  类似于C++

for ... in ...循环的表达

var ad = {key1: 1, key2: 2};

for (var x in ad) {console.log(x);} 其中的x是ad的key

var aa = ['1','asdf',2']

for (var x in aa) {console.log(x); console.log(aa[x]);}其中的x返回数组的index

for (var x of aa) {console.log(x);}x是数组中的元素。

while(条件) {执行语句; 变化;}

do {执行语句; 变化;} while (条件);

JavaScript有行末自动添加分号的机制

JS函数:

形式1

function fn(x,y) { 执行语句; return ans;}

形式2(匿名函数形式)

var fn = function(x,y) { 执行语句; return ans;};

JS的函数引入一个关键字arguments,在函数内部不需要定义arguments,它代表了函数传入的所有变量,可以当做一个数组。如arguments.length返回传入参数个数。

2020.02.13

函数中变量的作用域:

在函数中定义变量时加var可使其成为局部变量。

JS扫描函数体,在一个函数内,只要一个变量被声明,不管是在调用前后,变量都被"提升",也就是后声明不会报错。但如果调用在声明前,返回undefined,即变量声明被提升,但变量赋值不会提升。建议用一个var在函数开始声明所有变量,形式如

var x=1, y = 2, z = 3;

注意其中标点符号使用。

不在函数内定义的变量都是全局变量,全局变量的调用,可以直接调用变量名,也可以通过调用JS默认的全局对象windows的以变量名为名的属性。如下

'use strict'

var x = 1;

alert(window.x);

函数也是全局对象的一种属性,直接调用函数名和通过window.函数名()方式调用的效果相同。

为避免定义的函数与window namespace中的变量/函数重名,可在程序开始定义一个字典,用以保存自定义的变量和函数,对变量和函数的定义都是字典的一个key。

解析赋值

一个数组的元素赋给不同的变量

var [x, [y, z]] = [1,[2,3]]

(对象中的)方法:

对象(即字典)中不仅可以保存变量,也可以保存函数。形如

var aob = { birth: 99,

age : function () { var x = this.birth - 1;

return x;}

};

age函数中的this.birth引用了aob对象中的变量birth,this类似于python类中的self.


2020.02.14

window.onload()方法(插入在html文件中的)用于在网页加载完成后立即执行的方法,通常用于<body>元素。


reference:

1

2 https://www.jianshu.com/p/10197543d14e

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

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,157评论 0 3
  • 第一部分:快速入门JS学习中的一些注意点:2018.8.16基础知识: 入门JavaScript是世界上最流行的脚...
    天山雪莲_38324阅读 537评论 0 1
  • 第三章 类型、值和变量 1、存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象,它只是偶尔用来区分字符串值...
    坤少卡卡阅读 630评论 0 1
  • JavaScript语言精粹 前言 约定:=> 表示参考相关文章或书籍; JS是JavaScript的缩写。 本书...
    微笑的AK47阅读 578评论 0 3
  • 第一章 前端三大语言:HTML(专门编写网页内容)、CSS(编写网页样式)、JS(专门编写网页交互行为) 能简写尽...
    fastwe阅读 943评论 0 0