美文网首页
React Native使用JS和React编写Android/

React Native使用JS和React编写Android/

作者: 程序员大耳 | 来源:发表于2020-08-13 17:29 被阅读0次

react native:(基本常用JS语法)

一、类型&变量申明&作用域

1、类型

js中一共有7种内建类型:

null

undefined(js 和OC 的区别 就是为定义)

boolean (BOOLValue 不同)

number

string

object

symbol //在ES6中被加入

2、变量申明

在静态语言(如c、java、oc)中,我们通常使用变量类型或类、结构体等来申明变量、常量。

而在Js这种动态语言中变量没有类型,值才有类型。

变量可以在任何时候持有任何类型的值。

a、使用var/let关键字一个变量

b、使用const关键字申明一个常量

注:常量定义后,他指向的值不能被改变,但是值本身是可以改变的

c、使用function关键字申明一个函数

d、使用require/import申明导入其他Js文件中export的变量

3、作用域

a、作用域的概念

在以上代码中,我们在代码块中分别用let、var、const申明了a、b、c

在代码块外调用时,let和const申明的变量失效,var申明的变量仍然有值

let和const具有块级作用域,申明的变量只在作用域内部有效

b、变量提升

var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined

c、全局对象

浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。

浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。

Node 里面,顶层对象是global,但其他环境都不支持。

二、基本语法

1、语句

js的语句可以以';'分号结尾,也可以不带';'分号

2、操作符

赋值:比如a = 2中的=

数学:+(加法),-(减法),*(乘法),和/(除法),比如a * 3

复合赋值:+=,-=,*=,和/=都是复合操作符,它们组合了数学操作和赋值

递增/递减:++(递增),--(递减)

对象属性访问:比如console.log()的.圆点

等价性:==(宽松等价),===(严格等价),!=(宽松不等价),!==(严格不等价)

比较:<(小于),>(大于),<=(小于或宽松等价),>=(大于或宽松等价)

逻辑:&&(与),||(或),比如a || b它选择a或b中的一个

3、类型间转换

使用内建类型函数去强制转换

4、条件控制语句

支持:if else ,三目运算符,switch case

5、循环&遍历

支持for/break/continue 、while、do/while、for in / for of/ Map / forEach

for in / for of / Map / forEach比较

当我们使用for in遍历数组的时候,拿到的是下标;

当我们使用for of遍历数组的时候,拿到的是元素;

当我们使用map遍历数组的时候,需要传入一个回调function,可以拿到元素和下标、原数组;

当我们使用map遍历数组的时候,需要传入一个回调function,可以拿到元素和下标、原数组;

数组的map方法和forEach方法的主要不同点在返回值,map方法会返回一个数组,forEach方法没有返回值,后续我们在RN界面开发时,会经常使用map方法进行布局,参考以下代码:

三、原型与Object、Array、Set、Map数据结构

原型

prototype是函数对象的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象。它是显示修改对象的原型的属性。

_proto_是一个普通对象(上面提到的函数对象也属于普通对象)拥有的内置属性,是JS内部使用寻找原型链的属性。

js的继承就是通过原型链来实现的: 实际上js没有继承,但是_proto_却起到了类似继承的作用。js中所有的对象起源都是一个空对象,我们把这个空对象叫做原始对象。所有的对象通过_proto_回溯最终都会指向(所谓的指向类似C中的指针,这个原始对象是唯一的,整个内存中只会存在一个原始对象)这个原始对象。

四、Object对象

1、Object的定义:用 {} 来定义Object

2、Json字符串和对象相互转换:使用JSON.parse()和JSON.stringify()

3、属性取值

4、Object相关API

这里列出一些RN开发中可能会用的,详细API可参见文档MDNJs文档

Object.assign()

通过复制一个或多个对象来创建一个新的对象。

Object.create()

使用指定的原型对象和属性创建一个新对象。

Object.defineProperty()

给对象添加一个属性并指定该属性的配置。

Object.entries()

返回给定对象自身可枚举属性的[key, value]数组。

Object.values()

返回给定对象自身可枚举值的数组。

Object.keys()

返回一个包含所有给定对象自身可枚举属性名称的数组。

Object.is()

比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。

Object.setPrototypeOf()

设置对象的原型(即内部[[Prototype]]属性)。

五、Array

1、数组的定义:用[ ]来定义数组

2、Json字符串和数组相互转换:使用JSON.parse()和JSON.stringify()

3、Array相关API

这里列出一些RN开发中可能会用的,更多API详情可参见文档MDNJs文档

Array.prototype.includes()

判断当前数组是否包含某指定的值,如果是返回 true,否则返回 false。

Array.prototype.slice()

抽取当前数组中的一段元素组合成一个新数组。

Array.prototype.find()

找到第一个满足测试函数的元素并返回那个元素的值,如果找不到,则返回 undefined。

Array.prototype.findIndex()

找到第一个满足测试函数的元素并返回那个元素的索引,如果找不到,则返回 -1。

Array.prototype.entries()

返回一个数组迭代器对象,该迭代器会包含所有数组元素的键值对。

Array.prototype.values()

返回一个数组迭代器对象,该迭代器会包含所有数组元素的值。

Array.prototype.keys()

返回一个数组迭代器对象,该迭代器会包含所有数组元素的键。

Array.prototype.map()

返回一个由回调函数的返回值组成的新数组。

Array.prototype.forEach()

为数组中的每个元素执行一次回调函数

Array.prototype.some()

如果数组中至少有一个元素满足测试函数,则返回 true,否则返回 false。

Array.prototype.indexOf()

返回数组中第一个与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1。

Array.prototype.lastIndexOf()

返回数组中最后一个(从右边数第一个)与指定值相等的元素的索引,如果找不到这样的元素,则返回 -1。

六、Set

Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。

let set = new Set()

Set 相关API

这里列出一些RN开发中可能会用的,更多API详情可参见文档MDNJs文档

Set.prototype.add(value)

在Set对象尾部添加一个元素。返回该Set对象。

Set.prototype.clear()

移除Set对象内的所有元素。

Set.prototype.delete(value)

移除Set的中与这个值相等的元素,返回Set.prototype.has(value)在这个操作前会返回的值(即如果该元素存在,返回true,否则返回false)。Set.prototype.has(value)在此后会返回false。

Set.prototype.has(value)

返回一个布尔值,表示该值在Set中存在与否。

七、Map

键值对存储结构, es6以后的规范中,key可以使用任意类型的值,包括对象,数组等

Map相关API

这里列出一些RN开发中可能会用的,更多API详情可参见文档MDNJs文档

Map.prototype.clear()

移除Map对象的所有键/值对 。

Map.prototype.delete(key)

移除任何与键相关联的值,并且返回该值,该值在之前会被Map.prototype.has(key)返回为true。之后再调用Map.prototype.has(key)会返回false。

Map.prototype.get(key)

返回键对应的值,如果不存在,则返回undefined。

Map.prototype.has(key)

返回一个布尔值,表示Map实例是否包含键对应的值。

Map.prototype.set(key, value)

设置Map对象中键的值。返回该Map对象。

八、解构赋值

解构赋值是指变量赋值的一种常用方式,包含两部操作:

在从对象、数组中提取值

将提取的值赋给变量

在RN开发中,使用解构赋值进行组件化的

相关文章

网友评论

      本文标题:React Native使用JS和React编写Android/

      本文链接:https://www.haomeiwen.com/subject/vtdbdktx.html