zoukankan      html  css  js  c++  java
  • Javascript学习笔记(1)

    from谬雪峰,https://www.liaoxuefeng.com/wiki/1022910821149312/1023020925712064

    1. 第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

    2. 另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:

    NaN === NaN; // false
    唯一能判断NaN的方法是通过isNaN()函数:
    isNaN(NaN); // true

    3. s数组

    另一种创建数组的方法是通过Array()函数实现:
    new Array(1, 2, 3); // 创建了数组[1, 2, 3]

    4.对象

    JavaScript的对象是一组由键-值组成的无序集合,例如:

    var person = {
    name: 'Bob',
    age: 20,
    tags: ['js', 'web', 'mobile'],
    city: 'Beijing',
    hasCar: true,
    zipcode: null
    };
    JavaScript对象的键都是字符串类型,值可以是任意数据类型。上述person对象一共定义了6个键值对,其中每个键又称为对象的属性,例如,person的name属性为'Bob',zipcode属性为null。

    要获取一个对象的属性,我们用对象变量.属性名的方式:

    person.name; // 'Bob'
    person.zipcode; // null

    5. 变量

    申明一个变量用var语句,比如:

    var a; // 申明了变量a,此时a的值为undefined
    var (b = 1; // 申明了变量)b,同时给(b赋值,此时)b的值为1
    var s_007 = '007'; // s_007是一个字符串
    var Answer = true; // Answer是一个布尔值true
    var t = null; // t的值是null
    注意⚠️
    同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次,例如:
    var a = 123; // a的值是整数123
    a = 'ABC'; // a变为字符串

    这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下:
    int a = 123; // a是整数类型变量,类型用int申明
    a = "ABC"; // 错误:不能把字符串赋给整型变量
    和静态语言相比,动态语言更灵活,就是这个原因。

    全局变量和局部变量_strict模式

    i = 10; // i现在是全局变量
    在同一个页面的不同的JavaScript文件中,如果都不用var申明,恰好都使用了变量i,将造成变量i互相影响,产生难以调试的错误结果。

    为了修补JavaScript这一严重设计缺陷,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var申明变量,未使用var申明变量就使用的,将导致运行错误。

    启用strict模式的方法是在JavaScript代码的第一行写上:

    'use strict';
    这是一个字符串,不支持strict模式的浏览器会把它当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式运行JavaScript。

    字符串转义x与u

    ASCII字符可以以x##形式的十六进制表示,例如:

    'x41'; // 完全等同于 'A'
    还可以用u####表示一个Unicode字符:

    'u4e2du6587'; // 完全等同于 '中文'

    多行字符串

    这是一个 多行 字符串;

    模板字符串

    要把多个字符串连接起来,可以用+号连接:

    var name = '小明';
    var age = 20;
    var message = '你好, ' + name + ', 你今年' + age + '岁了!';
    alert(message);
    如果有很多变量需要连接,用+号就比较麻烦。ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量:
    注意⚠️,使用${}的时候一定要用反引号``来quote字符串

    var name = '小明';
    var age = 20;
    var message = 你好, ${name}, 你今年${age}岁了!;
    alert(message);

    unshift和shift

    如果要往Array的头部添加若干元素,使用unshift()方法,shift()方法则把Array的第一个元素删掉:

    concat

    实际上,concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里:
    var arr = ['A', 'B', 'C'];
    arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]

    splice

    splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素:
    var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
    // 从索引2开始删除3个元素,然后再添加两个元素:
    arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite']
    arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
    // 只删除,不添加:
    arr.splice(2, 2); // ['Google', 'Facebook']
    arr; // ['Microsoft', 'Apple', 'Oracle']
    // 只添加,不删除:
    arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因为没有删除任何元素
    arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']

    对象详解

    访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''括起来:

    var xiaohong = {
    name: '小红',
    'middle-school': 'No.1 Middle School'
    };
    xiaohong的属性名middle-school不是一个有效的变量,就需要用''括起来。访问这个属性也无法使用.操作符,必须用['xxx']来访问:

    xiaohong['middle-school']; // 'No.1 Middle School'
    xiaohong['name']; // '小红'
    xiaohong.name; // '小红'

    delete删除属性

    js是动态语言,所以可以动态的修改属性
    var xiaoming = {
    name: '小明'
    };
    xiaoming.age; // undefined
    xiaoming.age = 18; // 新增一个age属性
    xiaoming.age; // 18
    delete xiaoming.age; // 删除age属性
    xiaoming.age; // undefined
    delete xiaoming['name']; // 删除name属性
    xiaoming.name; // undefined
    delete xiaoming.school; // 删除一个不存在的school属性也不会报错

    'name' in xiaoming; // true
    'grade' in xiaoming; // false

    要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:

    var xiaoming = {
    name: '小明'
    };
    xiaoming.hasOwnProperty('name'); // true
    xiaoming.hasOwnProperty('toString'); // false

    请注意,if...else...语句的执行特点是二选一,在多个if...else...语句中,如果某个条件成立,则后续就不再继续判断了。

    for循环

    or 循环的语法如下:

    for (语句 1; 语句 2; 语句 3) {
    要执行的代码块
    }
    语句 1 在循环(代码块)开始之前执行。

    语句 2 定义运行循环(代码块)的条件。

    语句 3 会在循环(代码块)每次被执行后执行。

    实例
    for (i = 0; i < 5; i++) {
    text += "数字是 " + i + "
    ";
    }

  • 相关阅读:
    NOIP 2012 T5 借教室 [洛谷P1083]
    POJ2437 Muddy roads
    POJ2288 Islands and Bridges
    洛谷P2014 TYVJ1051 选课
    POJ1741 Tree
    CODEVS1995 || TYVJ1863 黑魔法师之门
    TYVJ1939 玉蟾宫
    TYVJ1305 最大子序和
    POJ1737 Connected Graph
    TYVJ1864 守卫者的挑战
  • 原文地址:https://www.cnblogs.com/lyzz1314/p/12752859.html
Copyright © 2011-2022 走看看