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
""
附上这道神题..