RN学习记录

了解RN

2018-2-8 (3h)搭建环境

  • 搭建了Mac下的Android和iOS的开发环境环境搭建

2018-2-9 JavaScrip基础学习

  • 学习地址
  • 存疑:JS代码通常写在<head>中仅因为约定的习惯,还有存在一定必要性?
  • 用 '===' 代替 '=='
  • 用isNaN判断NaN
  • 浮点数比较
1 / 3 === (1 - 2 / 3); // false 
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
  • JS接受的函数可以接受任意类型,数量的参数.函数里声明的参数按顺序去参数列表中取.
function foo(a, b) {
}
foo(10, 20, 30);  // a = 10, b = 20, 30没有var匹配 只能有arguments获取
foo(10);  // a = 10, b = undefined
foo(); // a = undefined, b = undefined
  • 变量提升
    JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部:
function foo() {
    var x = 'Hello, ' + y;  // 不会报错
    console.log(x);        // Hello, undefined
    var y = 'Bob';
}
实际效果为下面的函数
function foo() {
    var y; // 提升变量y的申明,此时y为undefined
    var x = 'Hello, ' + y;
    console.log(x);
    y = 'Bob';
}
  • 作用域: 不在任何函数内定义的变量就具有全局作用域。实际上,JavaScript默认有一个全局对象window,全局作用域的变量实际上被绑定到window的一个属性:
var course = 'Learn JavaScript';
alert(course); // 'Learn JavaScript'
alert(window.course); // 'Learn JavaScript'

其实函数也是一种具有全局作用域的变量

function foo() {
    alert('foo');
}

foo(); // 直接调用foo()
window.foo(); // 通过window.foo()调用
  • 大坑this指针
var xiaoming = {
    name: '小明',
    birth: 1990,
    age: function () {
        var y = new Date().getFullYear();
        return y - this.birth;
    }
};

xiaoming.age; // function xiaoming.age()
xiaoming.age(); // 今年调用是25,明年调用就变成26了
    var y = new Date().getFullYear();
    return y - this.birth;
}

var xiaoming = {
    name: '小明',
    birth: 1990,
    age: getAge
};

xiaoming.age(); // 25, 正常结果
getAge(); // NaN
var fn = xiaoming.age; // 先拿到xiaoming的age函数
fn(); // NaN
var xiaoming = {
    name: '小明',
    birth: 1990,
    age: function () {
        var y = new Date().getFullYear();
        return y - this.birth;
    }
};

var fn = xiaoming.age;
fn(); // Uncaught TypeError: Cannot read property 'birth' of undefined
var xiaoming = {
    name: '小明',
    birth: 1990,
    age: function () {
        function getAgeFromBirth() {
            var y = new Date().getFullYear();
            return y - this.birth;
        }
        return getAgeFromBirth();
    }
};

xiaoming.age(); // Uncaught TypeError: Cannot read property 'birth' of undefined
var xiaoming = {
    name: '小明',
    birth: 1990,
    age: function () {
        var that = this; // 在方法内部一开始就捕获this
        function getAgeFromBirth() {
            var y = new Date().getFullYear();
            return y - that.birth; // 用that而不是this
        }
        return getAgeFromBirth();
    }
};

xiaoming.age(); // 25

总结每个函数都会隐式声明斌复制一个this指针,该指针指向该函数的调用对象.且this指针不遵守就近原则

正解:
'use strict';

var xiaoming = {
    name: '小明',
    birth: 1990,
    age: function () {
        var that = this; // 在方法内部一开始就捕获this
        function getAgeFromBirth() {
            var y = new Date().getFullYear();
            return y - that.birth; // 用that而不是this
        }
        return getAgeFromBirth();
    }
};

xiaoming.age(); // 25

2018-2-10 继续JavaScrip基础学习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,207评论 0 13
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • ...
    周也小疯子阅读 541评论 0 0
  • 1.Docke介绍 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。...
    MichaelChoo阅读 698评论 0 9
  • 13年高考,进入了华东某校的应用化学专业,此后的本科生涯平平淡淡一直走到现在。没有遇到小说电视剧中丰富多彩的社团,...
    南州六月大荔枝阅读 238评论 1 1