JavaScript学习笔记(3.0)
创始人
2024-06-01 13:21:20
0

数组是一种特殊类型的对象。在JavaScript中对数组使用typeof运算符会返回“object”。

但是,JavaScript数组最好以数组来描述。

数组使用数字来访问其“元素”。比如person[0]访问person数组中的第一个元素。



JavaScript 对象

JavaScript 使用名称来访问对象属性。

同样也可以用这种方式进行修改对象中的属性



JavaScript 对象

JavaScript 使用名称来访问对象属性。

遍历数组元素

比较常用的方法就是for循环

var fruits, text, fLen, i;fruits = ["Banana", "Orange", "Apple", "Mango"];
fLen = fruits.length;
text = "
    "; for (i = 0; i < fLen; i++) {text += "
  • " + fruits[i] + "
  • "; }

还有一种方法就是foreach()函数



JavaScript 数组

Array.forEach() 为每个数组元素调用函数。

Internet Explorer 8 以及更早的版本不支持 Array.forEach()。

数组和对象的区别

在JS中,数组使用数字索引;对象使用命名索引。

数组是特殊类型的对象,具有数字索引。

那么什么时候使用数组,什么时候使用对象?

①js不支持关联数组

②如果希望元素名为字符串(文本)则应该使用对象。

③如果希望元素名为数字则应该使用数组

如何识别数组

常见的问题是:我如何知道某个变量是否是数组?

问题在于JS运算符typeof返回"object"



JavaScript 数组

typeof 运算符在数组上使用时返回 object:

还可以用ECMAscript 5定义的新方法Array.isArray():

Array.isArray(fruits);     // 返回 true

假如对象由给定的构造器创建,则可以用instanceof运算符看返回的结果是否为true:

var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits instanceof Array     // 返回 true

JavaScript Hoisting

提升(Hoising)是JavaScript将声明移至顶部的默认行为。

JavaScript声明会被提升

在JavaScript中,可以在使用变量之后对其进行声明。

换句话说,可以在声明变量之前使用它。





Hoisting是JavaScript将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)

注意:用let 或const声明的变量和常量不会被提升!

JavaScript初始化不会被提升

JavaScript只提升声明,而非初始化。



这里的两个值会正常显示 



这里的7就会显示未定义。

因为只有声明(var 7)而不是(=7)被提升到顶部。

由于hoisting,y在其使用前已经被声明,但是由于未对初始化进行提升,y的值仍然是未定义。如下所示:



所以,我们需要在顶部声明变量!

hoisting(对很多开发者来说)是JavaScript的一种未知的或被忽视的行为。如果开发者不理解hoisting,程序也许会包含bug(错误)。为了避免bug,请始终在每个作用域的开头声明所有变量。这就是JavaScript解释代码的方式,请保持这个好习惯。严格模式中的JavaScript不允许在未被声明的情况下使用变量。

JavaScript严格模式

“use strict”;定义JavaScript代码应该以“严格模式”执行。

“use strict”不算一条语句,而是一段文字表达式,更早版本的JavaScript会忽略它。

“use strict”;的作用是指示JavaScript代码应该以“严格模式”执行。

在严格模式中,无法使用未声明的变量。




Document


 当我们加上声明,就不会报错

 在函数中声明严格模式,拥有局部作用域(只有函数中的代码以严格模式执行):

x = 3.14;       // 这不会引发错误
myFunction();function  myFunction() {"use strict";y = 3.14;   // 这会引发错误
}

那么为什么要使用严格模式呢?

严格模式使我们更容易编写“安全的”JavaScript。

严格模式把之前可接受的“坏语法”转变为真实的错误。

举例来说,在普通的JavaScript中,错打变量名会创建新的全局变量。在严格模式中,此举将抛出错误,这样就不可能意外创建全局变量。

在普通JavaScript中,如果向不可写属性赋值,开发者不会得到任何错误反馈。

在严格模式中,向不可写的、只能读取的、不存在的属性赋值,或者向不存在的变量或对象赋值,将抛出错误。

删除变量(或对象)是不允许的:




Document


 重复函数名是不允许的:
 

"use strict";
function x(p1, p1) {};   // 这将引发错误

八进制数值文本是不允许的:
 

"use strict";
var x = 010;             // 这将引发错误

转义字符是不允许的:

"use strict";
var x = \010;            // 这将引发错误

写入只读属性是不允许的:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});obj.x = 3.14;            // 这将引发错误

写入获取的属性是不允许的:

"use strict";
var obj = {get x() {return 0} };obj.x = 3.14;            // 这将引发错误

删除不可删除的属性是不允许的:

"use strict";
delete Object.prototype; // 这将引发错误

with语句也是不允许的:

"use strict";
with (Math){x = cos(2)}; // 这将引发错误

不允许eval()在其被调用的作用域中创建变量:

"use strict";
eval ("var x = 2");
alert (x);               // 这将引发错误

严格模式中不允许使用为未来预留的关键词。它们是:

implements
interface
let
package
private
protected
public
static
yield




Document


 注意:use strict指令只能在脚本或函数的开头被识别。

this



JavaScript this 关键词

在本例中,this 代表 person 对象。

因为 person 对象“拥有” fullName 方法。

this关键字指的是它所属的对象。

它拥有不同的值,具体取决于它的使用位置:

在方法中,this指的是所有者对象。

单独的情况下,this指的是全局对象。

在函数中,this指的是全局对象。

在函数中,严格模式下,this是undefined

在事件中,this指的是接收事件的元素

比如call()和apply()这样的方法可以将this引用到任何对象。

函数中的this(默认)



JavaScript this 关键词

在本例中,this 代表“拥有” myFunction 的对象:

这里的结果就是this.x的输出为123.

事件处理程序中的this

在HTML事件处理程序中,this值得是接收此事件的HTML元素:



JavaScript this 关键词

相关内容

热门资讯

Python|位运算|数组|动... 目录 1、只出现一次的数字(位运算,数组) 示例 选项代...
张岱的人物生平 张岱的人物生平张岱(414年-484年),字景山,吴郡吴县(今江苏苏州)人。南朝齐大臣。祖父张敞,东...
西游西后传演员女人物 西游西后传演员女人物西游西后传演员女人物 孙悟空 六小龄童 唐僧 徐少华 ...
名人故事中贾岛作诗内容简介 名人故事中贾岛作诗内容简介有一次,贾岛骑驴闯了官道.他正琢磨着一句诗,名叫《题李凝幽居》全诗如下:闲...
和男朋友一起优秀的文案? 和男朋友一起优秀的文案?1.希望是惟一所有的人都共同享有的好处;一无所有的人,仍拥有希望。2.生活,...
戴玉手镯的好处 戴玉手镯好还是... 戴玉手镯的好处 戴玉手镯好还是碧玺好 女人戴玉?戴玉好还是碧玺好点佩戴手镯,以和田玉手镯为佳!相嫌滑...
依然什么意思? 依然什么意思?依然(汉语词语)依然,汉语词汇。拼音:yī    rán基本解释:副词,指照往常、依旧...
高尔基的散文诗 高尔基的散文诗《海燕》、《大学》、《母亲》、《童年》这些都是比较出名的一些代表作。
心在飞扬作者简介 心在飞扬作者简介心在飞扬作者简介如下。根据相关公开资料查询,心在飞扬是一位优秀的小说作者,他的小说作...
卡什坦卡的故事赏析? 卡什坦卡的故事赏析?讲了一只小狗的故事, 我也是近来才读到这篇小说. 作家对动物的拟人描写真是惟妙...
林绍涛为简艾拿绿豆糕是哪一集 林绍涛为简艾拿绿豆糕是哪一集第三十二集。 贾宽认为是阎帅间接导致刘映霞住了院,第二天上班,他按捺不...
小爱同学是女生吗小安同学什么意... 小爱同学是女生吗小安同学什么意思 小爱同学,小安同学说你是女生。小安是男的。
内分泌失调导致脸上长斑,怎么调... 内分泌失调导致脸上长斑,怎么调理内分泌失调导致脸上长斑,怎么调理先调理内分泌,去看中医吧,另外用好的...
《魔幻仙境》刺客,骑士人物属性... 《魔幻仙境》刺客,骑士人物属性加点魔幻仙境骑士2功1体质
很喜欢她,该怎么办? 很喜欢她,该怎么办?太冷静了!! 太理智了!爱情是需要冲劲的~不要考虑着考虑那~否则缘...
言情小说作家 言情小说作家我比较喜欢匪我思存的,很虐,很悲,还有梅子黄时雨,笙离,叶萱,还有安宁的《温暖的玄》 小...
两个以名人的名字命名的风景名胜... 两个以名人的名字命名的风景名胜?快太白楼,李白。尚志公园,赵尚志。
幼儿教育的代表人物及其著作 幼儿教育的代表人物及其著作卡尔威特的《卡尔威特的教育》,小卡尔威特,他儿子成了天才后写的《小卡尔威特...
海贼王中为什么说路飞打凯多靠霸... 海贼王中为什么说路飞打凯多靠霸气升级?凯多是靠霸气升级吗?因为之前刚到时确实打不过人家因为路飞的实力...
运气不好拜财神有用吗运气不好拜... 运气不好拜财神有用吗运气不好拜财神有没有用1、运气不好拜财神有用。2、拜财神上香前先点蜡烛,照亮人神...