您的位置:首页 > Web前端 > JavaScript

4000 JavaScript学习笔记

2017-10-24 17:52 183 查看

1. 数据类型和变量

1.1 等式

在下面的示例中,JavaScript 传入字符串”1”,并将其转换为 true,然后与布尔值 true 比较。

"1" == true


返回:true

当你使用 == 或 != 运算符时,JavaScript 首先将每个值转换为相同类型(如果不是相同类型的话);因此叫做“转型”!这通常不是你希望出现的行为,比较值是否相等时使用 == 和 != 运算符并不是很好的做法。

绝对相等

相反,在 JavaScript 中,最好使用绝对相等的方法看看数字、字符串或布尔型数值等在类型和值方面是否完全相同,而不用首先转换类型。要进行绝对比较,只需在 == 和 != 运算符的末尾添加一个 =。

"1" === 1


返回:false

返回 false,因为字符串 “1” 和数字 1 并非具有相同的类型和值。

练习:看看哪些表达式为 true。

1.   "3">1
2.   3!=3
3.   true>=0
4.   1!==false
5.   "false"===0
6.   3===3


答案: 1,3,4,6

解析:

在”===”和”!==”符号中,由字符类型和数值来判断,有一个不相等即不等

在”>”、”<”等运算符中,先将其转化为数字,在进行比较

2. 数组

2.1 数组的属性和方法

Splice

splice()
是另一个很有用的方法,可以让你向数组的任意位置添加元素和移除任意位置的元素。

示例:

var donuts = ["glazed", "chocolate frosted", "Boston creme", "glazed cruller"];
donuts.splice(1, 1, "chocolate cruller", "creme de leche"); /* removes "chocolate frosted" at index 1 and adds "chocolate cruller" and "creme de leche" starting at index 1 */


返回:[“chocolate frosted”]

donuts 数组:[“glazed”, “chocolate cruller”, “creme de leche”, “Boston creme”, “glazed cruller”]

第一个参数表示你要从哪个索引开始更改数组,第二个参数表示你要删除的元素数量,剩下的参数表示你要添加的元素。

语法:arrayObject.splice(index,howmany,item1,…..,itemX)



附上练习题:



第一次接触到index是负数的用法,觉得这道题解释的很清楚~

shift() will remove the first element from an array.

slice()

slice()
方法可从已有的数组中返回选定的元素。

语法:
arrayObject.slice(start,end)




返回值

返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

说明

请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。

提示和注释

注释:您可使用负值从数组的尾部选取元素。

如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。

join()

join()
方法用于把数组中的所有元素放入一个字符串。

元素是通过指定的分隔符进行分隔的。

语法:

arrayObject.join(separator)


返回值:

返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。

2.1 数组forEach循环

语法:

array.forEach(function(value,index,array){
// function
});


参数:value数组中的当前项, index当前项的索引, array原始数组;

数组中有几项,那么传递进去的匿名回调函数就需要执行几次;

理论上这个方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行修改;但是可以自己通过数组的索引来修改原来的数组

练习:使用数组的 forEach() 方法 循环访问以下数组,如果某个值可以被 3 整除,则向这些值加 100。向控制台中输出 test 数组。

这里会发现写出的代码没有返回值,所以不能修改原数组,输出数组时会输出原数组。所以这里要使用索引修改数组。

代码:

var test = [12, 929, 11, 3, 199, 1000, 7, 1, 24, 37, 4,
19, 300, 3775, 299, 36, 209, 148, 169, 299,
6, 109, 20, 58, 139, 59, 3, 1, 139
];

// Write your code here

test.forEach( function(num,i,test) {
if(test[i]%3===0){
test[i]+=100;
}
} );
console.log(test);


2.2 数组map循环

map和forEach的不同在于map有返回值,并且需要将数组赋予另一个新的数组(相当于复制),原数组值不发生改变。

var newarrays = myarrays.map(function(array){
//function
return array;
})


P.S. 附上两个方法

1.toFixed() 方法

toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。


NumberObject.toFixed(num)


但是这样处理以后该方法会返回一个字符串,保持了数字的“修复后”格式。所以,如果你想将字符串转换回数字,可以转型或转换回数字:

2.Number(“1”)

3.条件语句

这里有一个很有意思的判断。

“null” 是个为真的字符串。null 值本身为假。JavaScript 中的假值如下所示:

false
null
undefined
0
NaN
""


附上这道神题..

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: