zoukankan      html  css  js  c++  java
  • javascript学习笔记

    1.typeof是操作符,不是函数,不过可以以函数的写法调用。例子:alert(typeof message);alert(typeof(message));

    2.js变量类型虽是松散的,但也是有类型的

    3.一个变量在定义时被初始化,根据初始化的值,变量的类型就被指明了,比如var message = "some string";此时message是字符串类型,之后也可以赋给它其它类型的值,如message=15,但这样并不推荐

    4.js有两个特殊数据类型:undefined类型和null类型

    1)undefined类型只有一个值undefined,null类型也只有一个值null

    2)undefined类型派生自null类型

    3)声明一个未初始化的变量,这个变量的值便是undefined,

    如var message,car;

    alert(message);//undefined

    alert(car);//undefined

    alert(message == car);//true

    4)一个未声明过的变量,其值也是undefined,

    如alert(age);//undefined

    5)null表示一个空对象指针,使用typeof查看null类型是object,并不是null

    6)null最大的用途是可以用来初始化对象,进而在后续代码中借此判断一个对象是否是有效的,即if(car != null)

    5.Number()可以将任何类型转换为数值;parseInt()和parseFloat()只用于将字符串转换为数值;

    6.把一个值转换为字符串的函数是.toString()或String()方法

    7.toString()和valueOf()都是object类的成员函数

    8.js也支持位操作

    9.数值和字符串相加,将会把数值转换为字符串,拼接字符串;数值和字符串比较,将会把字符串转换为数值,再进行比较

    10.对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。例如:

    var person = new Object();

    person.name = "Tom";

    即,不必像c++样需要先定义好类成员

    11.跟c++一样,引用类型的复制,双方指向同一个对象

    var obj1 = new Object();

    var obj2 = obj1;

    obj2.name = "Tom";

    alert(obj1.name);// Tom

    该规则同样适用于引用类型数据做函数参数时的传参

    12.对一个引用类型的对象使用操作符typeof ,总会返回object,并不会返回具体的类型,因此没什么实际意义.可以用另一个操作符instanceof 判断对象是否是某种类型,例如:

    alert (person instanceof Object);//变量person是object类型吗

    alert (colors instanceof Array);//变量colors是Array类型吗

    13.执行环境是一个对象,其中定义的所有变量和函数都属于这个对象,在浏览器中,最外围的执行环境是window 对象

    14.当函数被调用的时候,函数被作为对象,被称作活动对象,argument 就是该对象的属性

    15.作用域链就是层层嵌套的执行环境链

    16.一个变量的作用域只取决于执行环境,而跟花括号无关,这点跟C是不一样的,例如:

    if (true) { var color = "blue"; }

    alert(color);// 此时是可以访问的

    尤其使用for循环的时候易出错:

    for (var i = 0; i < 10; i++) {...}

    alert(i);//此时i=10

    17.除了用new的方法创建object对象,还可以用对象字面量的方法定义,例如:

    var person = {

      name:"tom",

      age:19

    };

    也可以这样定义

    var person = {};

    person.name = "tom";

    person.age = 19;

    18.对象字面量还可以为函数传参,例如:

    function displayInfo(args) {
        var output = "";
        
        if (typeof args.name == "string") {
            output += "Name:" + args.name + " ";
        }
        
        if (typeof args.age == "number") {
            output += "Age:" + args.age + " ";
        }
        
        alert(output);
    }

    displayInfo({
        name: "Tom",
        age: 19
    });

    displayInfo({
        name:"John"
    });

    19.定义数组的各种方式

    var colors = new Array(3);//包含3项

    var colors = new Array("red","blue","green");

    var colors = ["red","blue","green"];

    20.js数组可以自动增长

    21.对数组执行toString()和valueOf()方法,默认按逗号分隔,如果想按特定符号分隔,可以使用数组的join函数

    22.函数的this属性,不是指函数本身,而是函数在执行时所处的执行环境

    23.函数的apply方法是相当于在特定的作用域中调用函数,实际上相当于设置函数的this值,call具有同样的作用,它们唯一的区别是,传参方式不一样,前者用数组,后者罗列。这两个函数最大的用处就是扩大函数的作用域。

    24.对象有一个重要属性prototype ,函数作为对象,自然也拥有prototype ,prototype中的内容可以视作c++里面的静态成员,即各实例对象共享

    25.闭包指有权访问另一个函数作用域中的变量的函数,最常见的形态就是,一个函数中返回值是一个函数,闭包最重要的作用也是可以扩展函数的作用域

    27.var val = "false";

    if (val) {// 因为字符串"false"不为空,所以隐式转换成布尔类型为真

    alert("val是false");

    }

    if (Boolean(val)){// 仍然为真,并不为false

    alert("val是false");

    }

  • 相关阅读:
    android布局
    Windows7 32/64位系统搭建Cocos2d-x及Android交叉编译环境
    第12章 文件管理
    第十章 多处理器和实时调度
    C语言实现多级反馈队列调度算法
    C++实现操作系统调度算法(FSFS,SJF,RR,多级反馈队列算法)
    多级反馈队列调度算法
    第九章 单处理器调度
    第六章 并发:死锁与饥饿
    第七章 内存管理
  • 原文地址:https://www.cnblogs.com/any91/p/3259123.html
Copyright © 2011-2022 走看看