React Native之(var和let区别 )(简单解构)(map对象遍历)(可变顺序参数和不可以变顺序参数函数)

1 var和let区别

   let左右范围在块里面,var定义的变量可提升,用let声明的变量不可以声明2次


2 简单解构

let [a, b, c] = [1, 2, 3];

 
3  map对象遍历

        const map = new Map();
        map.set('first', 'hello');
        map.set('second', 'world');
     
        for (let [key, value] of map) {
          console.log(key + " is " + value);
        }

 
4 可变顺序参数和不可以变顺序参数函数

//参数是{}格式这种调用可以无序,一般参数都是键值对形式进行传递

 //参数是[]格式需要有顺序

 

 
5 测试代码

    /**
     * Sample React Native App
     * https://github.com/facebook/react-native
     *
     * @format
     * @flow
     */
     
    import React, {Component} from 'react';
    import {Platform, ScrollView, StyleSheet, Text, View, TextInput, NativeModules, DeviceEventEmitter, Image, Button, AppRegistry, TouchableHighlight, TouchableOpacity, TouchableNativeFeedback, TouchableWithoutFeedback} from 'react-native';
     
    const instructions = Platform.select({
      ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
      android:
        'Double tap R on your keyboard to reload,\n' +
        'Shake or press menu button for dev menu',
    });
     
    export default class App extends Component<Props> {
      render() {
        return (
          <View style={styles.container}>
            <View style={styles.buttonContainer}>
              <Button onPress={() => this.ff()} title="press me"/>
            </View>  
            <View style={styles.buttonContainer}>
              <Button onPress={this.ff} title="press me" color="#841584"/>
            </View>
     
           <View style={styles.buttonContainer}>
              <TouchableHighlight onPress={this.showMsg} underlayColor="white">
                  <View style={styles.button}>
                      <Text style={styles.text}>{this.move1({x: 3, y: 4})}</Text>
                  </View>
              </TouchableHighlight>
            </View>
     
            <View style={styles.buttonContainer}>
              <TouchableOpacity onPress={this.showMsg}>
                  <View style={styles.button}>
                      <Text style={styles.text}>{this.move3([3, 4, 5])}</Text>
                  </View>
              </TouchableOpacity>
            </View>
     
            <View style={styles.buttonContainer}>
              <TouchableNativeFeedback onPress={this.showMsg}>
                  <View style={styles.button}>
                      <Text style={styles.text}>{this.move2({y: 4, x: 3})}</Text>
                  </View>
              </TouchableNativeFeedback>
            </View>
     
            <View style={styles.buttonContainer}>
              <TouchableWithoutFeedback onPress={this.showMsg}>
                  <View style={styles.button}>
                      <Text style={styles.text}>{this.move4([3, 4, 5])}</Text>
                  </View>
              </TouchableWithoutFeedback>
            </View>
     
           <View style={styles.buttonContainer}>
              <TouchableWithoutFeedback onLongPress={this.showMsg}>
                  <View style={styles.button}>
                      <Text style={styles.text}>onLongPress me</Text>
                  </View>
              </TouchableWithoutFeedback>
            </View>
     
           <View style={styles.layoutButtonContainer}>
              <Button onPress={this.showMsg} title="onLongPress me"/>
          <Button onPress={this.showMsg} title="onLongPress me" color="#841584"/>
            </View>
          </View>
        );
      }
     
        //参数是{}格式这种调用可以无序,一般参数都是键值对形式进行传递
        move1({x = 0, y = 0} = {}) {
            return x + y;
        }
        //参数是{}格式这种调用可以无序,一般参数都是键值对形式进行传递
        move2 = ({x, y} = {x: 0, y: 0}) => {
        return x + y;
        }
        //参数是[]格式需要有顺序,
        move3([x, y, z]) {
        return x + y + z;
        }
        //参数是[]格式需要有顺序,
        move4 = ([x, y ,z]) => {
        return x + y + z;
        }
            
     
        //记得这里调用的时候不需要加上()
        showMsg() {
            console.log("chenyu");
            for (var i = 0; i < 5; i++) {
            setTimeout(function() {
                    console.log(i);
                }, 0);
            }
            for (let j = 0; j < 6; j++) {
              setTimeout(function() {
                    console.log(j);
                }, 0);
            }
            var a = [];
            for (var k = 0; k < 10; ++k) {
                a[k] = function() {console.log(k);};
            }
            a[0]();
            a[1]();
            a[6]();
            var b = [];
            for (let j = 0; j < 10; j++) {
                b[j] = function() {console.log(j);};
            }
            b[0]();
            b[1]();
            b[6]();
        //遍历map
        const map = new Map();
        map.set('first', 'hello');
        map.set('second', 'world');
     
        for (let [key, value] of map) {
          console.log(key + " is " + value);
        }
            var [c, d] = [[1, 2], [3, 4]].map(([a, b]) => a + b);
            console.log("1 + 2:" + c);
            console.log("3 + 4:" + d);
            let jsonData = {id: 100, name:"chenyu", data:[100, 200]};
            let {id, name, data:number} = jsonData;
            console.log(id, name, number);
          
        }
     
    }
     
    const styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center'
      },
      buttonContainer: {
        margin:10
      },
      layoutButtonContainer: {
        margin:10,
        flexDirection: 'row',
        justifyContent: 'space-between'
      },
      button: {
        alignItems: 'center',
        backgroundColor: '#842534'
      },
      text: {
        padding: 10,
        color: 'white'
      }
    });

 

 
6 运行结果

手机界面效果如下

点击上面的 7 按钮 日志如下

              ReactNativeJS  I  chenyu
          SettingsInterface  V  invalidate [system]: current 633 != cached 0
              ReactNativeJS  I  10
                             I  10
                             I  10
                             I  0
                             I  1
                             I  6
                             I  first is hello
                             I  second is world
                             I  1 + 2:3
                             I  3 + 4:7
                             I  100, 'chenyu', [ 100, 200 ]
                             I  5
                             I  5
                             I  5
                             I  5
                             I  5
                             I  0
                             I  1
                             I  2
                             I  3
                             I  4
                             I  5

 
 


 










作者:chen.yu
深信服三年半工作经验,目前就职游戏厂商,希望能和大家交流和学习,
微信公众号:编程入门到秃头 或扫描下面二维码
零基础入门进阶人工智能(链接)