JavaScript笔记

2018-11-24  本文已影响10人  竹鼠不要中暑

作用域

为什么需要作用域?

JavaScript作用域

全局作用域

局部作用域

块级作用域

ECMAScript 6(简称ES6)中新增了块级作用域。

<script type="text/javascript">
    // 块作用域
    {
        var a = 1;
        let b = 2;
        const c = 3;
        // c = 4; // 报错
        var aa;
        let bb;
        // const cc; // 报错
        console.log(a); // 1
        console.log(b); // 2
        console.log(c); // 3
        console.log(aa); // undefined
        console.log(bb); // undefined
    }
    console.log(a); // 1
    // console.log(b); // 报错
    // console.log(c); // 报错

    // 函数作用域
    (function A() {
        var d = 5;
        let e = 6;
        const f = 7;
        console.log(d); // 5
        console.log(e); // 6  (在同一个{ }中,也属于同一个块,可以正常访问到)
        console.log(f); // 7  (在同一个{ }中,也属于同一个块,可以正常访问到)

    })();
    // console.log(d); // 报错
    // console.log(e); // 报错
    // console.log(f); // 报错
    // 函数用()括起来,闭包,将函数从全局中分离出去,外部无法访问其中变量和函数。
</script>

作用域原则

字符串

let longString = "This is a very long string which needs " +
                 "to wrap across multiple lines because " +
                 "otherwise my code is unreadable.";

let longString = "This is a very long string which needs \
to wrap across multiple lines because \
otherwise my code is unreadable.";

字符字面量

也叫作转义字符,用于表示非打印字符,或有其他用途的字符。常见的有:

字符串特点

字符串常用方法

数组

数组是数据的有序列表,在JavaScript中,数组中的每一项可以保存任何类型的数据,也就是说可以用数组的第一项保存字符串,第二项保存数值,第三项保存对象等,同时,JavaScript中数组的长度是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。

var fruits = ['apple', 'pear', 'peach'];
fruits.length = 2;
console.log(fruits[2]); // undefined - 相当于删除了数组中的第三项

数组常用方法

fruits.forEach(function (item, index, array) {
    console.log(item, index);
});
// Apple 0
// Banana 1
var newLength = fruits.push('Orange');
var last = fruits.pop(); // remove Orange (from the end)
// last: "Orange"; fruits: ["Apple", "Banana"];
var first = fruits.shift(); // remove Apple from the front
// ["Banana"];
var newLength = fruits.unshift('Strawberry') // add to the front
// ["Strawberry", "Banana"];
fruits.push('Mango');
// ["Strawberry", "Banana", "Mango"]

var pos = fruits.indexOf('Banana');
// 1
var removedItem = fruits.splice(pos, 1); // this is how to remove an item
// ["Strawberry", "Mango"]
var vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot'];
console.log(vegetables); 
// ["Cabbage", "Turnip", "Radish", "Carrot"]
var pos = 1, n = 2;
var removedItems = vegetables.splice(pos, n);
// this is how to remove items, n defines the number of items to be removed,
// from that position(pos) onward to the end of array.
console.log(vegetables); 
// ["Cabbage", "Carrot"] (the original array is changed)
console.log(removedItems); 
// ["Turnip", "Radish"]
var shallowCopy = fruits.slice(); // this is how to make a copy 
// ["Strawberry", "Mango"]

数学运算符

Math对象

Math 对象用于执行数学任务。

Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()。

属性 描述
E 返回算术常量 e,即自然对数的底数(约等于2.718)。
LN2 返回 2 的自然对数(约等于0.693)。
LN10 返回 10 的自然对数(约等于2.302)。
LOG2E 返回以 2 为底的 e 的对数(约等于 1.4426950408889634)。
LOG10E 返回以 10 为底的 e 的对数(约等于0.434)。
PI 返回圆周率(约等于3.14159)。
SQRT1_2 返回 2 的平方根的倒数(约等于 0.707)。
SQRT2 返回 2 的平方根(约等于 1.414)。
方法 描述
abs(x) 返回 x 的绝对值。
asin(x) 返回 x 的反正弦值。
atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
ceil(x) 对数进行上舍入。
cos(x) 返回数的余弦。
exp(x) 返回 Ex 的指数。
floor(x) 对 x 进行下舍入。
log(x) 返回数的自然对数(底为e)。
max(x,y,z,...,n) 返回 x,y,z,...,n 中的最高值。
min(x,y,z,...,n) 返回 x,y,z,...,n中的最低值。
pow(x,y) 返回 x 的 y 次幂。
random() 返回 0 ~ 1 之间的随机数。
round(x) 四舍五入。
sin(x) 返回数的正弦。
sqrt(x) 返回数的平方根。
tan(x) 返回角的正切。
var x = Math.round(2.3);
alert(x); // 2
var x = Math.round(2.6);
alert(x); // 3
var x = Math.ceil(2.35);
alert(x); // 3
var x = Math.floor(2.35,);
alert(x); // 2

逻辑运算符

运算符 示例 说明
逻辑与 (&&) expr1 && expr2 如果expr1 能转换成false则返回expr1,否则返回expr2。因此,与布尔值一起使用时,如果两个操作数都为true&&返回true,否则返回false
逻辑或 (||) expr1 || expr2 如果expr1能转换成true则返回expr1,否则返回expr2。因此,与布尔值一起使用时,如果任意一个操作数为true||返回true
逻辑非(!) !expr 如果expr能转换为true,返回false;如果expr能转换为false,则返回true

条件分支语句

条件分支语句就是基于不同的条件去执行不同的动作

条件分支语句每次只执行多种情况中的一种情况。

循环语句

循环结构的三个要素:循环变量循环体循环终止条件

上一篇下一篇

猜你喜欢

热点阅读