运算符

介绍
运算符的意义就不必我多讲了把,主要就是为了简便计算,优化代码,给代码增强了逻辑性,让我们的运算都方便.
通常来说,我们运算的方式都是依赖于这些运算符的作用,它们就像一个链接,把数据链接起来,从而达到运算的作用
流程

1.基本的运算符

var a = 10, b = 20;
// 加法运算
console.log(30 === a + b);
// 减法运算
console.log(-10 === a - b);
// 乘法运算
console.log(200 === a * b);
// 除法运算
console.log(0.5 === a / b);
// 取余运算
console.log(10 === a % b);

(注意:加法运算(+)也可以用作字符串的拼接)

2.字符串的拼接用法

var a = '.w' , b = 'xs';// 字符串拼接
console.log('.wxs' === a + b);

3.一元运算符
顾名思义,就是简单的一元运算的运算符

var a = 10, b = 20;
// 自增运算
console.log(10 === a++);
console.log(12 === ++a);
// 自减运算
console.log(12 === a--);
console.log(10 === --a);
// 正值运算
console.log(10 === +a);
// 负值运算
console.log(0-10 === -a);
// 否运算
console.log(-11 === ~a);
// 取反运算
console.log(false === !a);
// delete 运算
console.log(true === delete a.fake);
// void 运算
console.log(undefined === void a);
// typeof 运算
console.log("number" === typeof a);
位运算符

var a = 10, b = 20;

// 左移运算
console.log(80 === (a << 3));
// 带符号右移运算
console.log(2 === (a >> 2));
// 无符号右移运算
console.log(2 === (a >>> 2));
// 与运算
console.log(2 === (a & 3));
// 异或运算
console.log(9 === (a ^ 3));
// 或运算
console.log(11 === (a | 3));

比较运算符
也就是相互比较的运算符,比如 > = < >= <= ===等等

var a = 10, b = 20;// 小于
console.log(true === (a < b));
// 大于
console.log(false === (a > b));
// 小于等于
console.log(true === (a <= b));
// 大于等于
console.log(false === (a >= b));

这些是运算符的一些基本用法,更多更详细的用法可以看官网-运算符
但是运算符之间是有优先级的,优先级高的就会限制性

运算符优先级




这就是运算符之间的优先级.

列表渲染

wx:for
在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。
默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

<view wx:for="{{array}}">{{index}}: {{item.message}}
</view>
Page({data: {array: [{message: 'foo',}, {message: 'bar'}]}
})

使用 wx:for-item 可以指定数组当前元素的变量名,
使用 wx:for-index 可以指定数组当前下标的变量名:

wx:for 也可以嵌套,下边是一个九九乘法表

<view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i"><view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j"><view wx:if="{{i <= j}}">{{i}} * {{j}} = {{i * j}}</view></view>
</view>

block wx:for
类似 block wx:if,也可以将 wx:for 用在标签上,以渲染一个包含多节点的结构块

wx:key
如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 input 中的输入内容,switch 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

wx:key 的值以两种形式提供

字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。
保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字。
当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。
(注意:如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。)
(注意:当 wx:for 的值为字符串时,会将字符串解析成字符串数组)

总结:

为了简便计算,优化代码,给代码增强了逻辑性,让我们的运算gengjai.
基本运算符
一元运算符
位运算符
比较运算符
等值运算符
赋值运算符
二元逻辑运算符
其他运算符

总结注意点:

  • 加法运算(+)也可以用作字符串的拼接
  • 如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。
  • 当 wx:for 的值为字符串时,会将字符串解析成字符串数组

好了,我们今天就到这里了

微信小程序详解(4.运算符和列表渲染)相关推荐

  1. 微信小程序详解 php,微信小程序canvas基础详解

    canvas 元素用于在网页上绘制图形.HTML5 的 canvas 元素使用 JavaScript 在网页上绘制2D图像.本文主要和大家分享微信小程序canvas基础详解,希望能帮助到大家. 一.了 ...

  2. 微信小程序详解 php,微信小程序列表开发详解

    本文主要和大家分享微信小程序列表开发详解,主要以代码的形式和大家分享,希望能帮助到大家. 一.知识点 (一).列表渲染 wx:for tip:wx:for="array"可以等于参 ...

  3. 微信小程序 详解 小程序支付

    1.小程序内调用登录接口,获取到用户的openid,api参见公共api[小程序登录API]  上面已经说过要前后台结合,所以开发小程序的你这时就要做第一步了,文档在:https://mp.weixi ...

  4. 微信小程序详解(1 小程序账号注册和安装小程序开发软件)

    介绍 微信小程序其实就是微信里的以前的一个应用号,为了迎合市场的需求,能给微信里那些优秀的公众号提供更好的技术,让他们能给粉丝提供更好更优的服务.可以不用下载,不用安装,却能够实现APP的几乎所有功能 ...

  5. 微信小程序详解——小程序的生命周期和页面的生命周期

    我是一名安卓程序员,我们安卓中最明显的特征就是类具有生命周期.所以当开发小程序的时候,我自然而然的会先研究小程序的生命周期.在Android中是通过Application来管理安卓程序的生命周期,小程 ...

  6. 微信小程序详解wx:if elif else的用法(搭配view、block)

    1.搭配view 控制显示 <view wx:if="{{boolean==true}}"><view class="bg_black"> ...

  7. 微信小程序-04-详解介绍.json 配置文件

    致我自己:小程序开发不是简单一两天的事,一两天只能算是了解,有时候看多了会烦,感觉很熟悉了,其实只是对表面进行了解,对编程却知之甚少,小程序开发不是简单的改模板,一两天很多部分改模板可能都做不到,坚持 ...

  8. 原生微信小程序使用class 三元运算符实现多选案例

    原生微信小程序使用class 三元运算符实现多选案例 如下图所示: 1,在vue中开发非常容易实现,使用数组的includes方法判断即可,但是在原生小程序中不可以 2,要及时的对定义的遍历进行set ...

  9. 微信小程序手机号解密报错:pad block corrupted 解决方法

    微信小程序手机号解密报错:pad block corrupted 解决方法 微信小程序获取用户手机号,后端解密手机号的时候偶尔会报错 javax.crypto.BadPaddingException: ...

最新文章

  1. 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)
  2. java中遍历map的几种方法介绍
  3. 进程间通信(一)管道
  4. python创建模块文件夹_python文件、文件夹、压缩包处理模块-shutil模块
  5. [代码整洁]自我感悟
  6. 左神算法:二叉树的按层打印与ZigZag打印(Java版)
  7. 开篇:讲讲peopleeditor遇到的问题
  8. C++,Java编程空指针的一个小细节
  9. 我的世界服务器里怎么无限随机传送,我的世界随机传送插件使用教程 权限指令分享...
  10. CVPR 2021 Oral | Transformer!UP-DETR:无监督预训练检测器
  11. getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getSchemeSpecificPart()返回内容解析
  12. generic_make_request函数处理bio流程分析
  13. 时间序列分析与非参数统计
  14. 解决报错(4种情况):0x00007FF614F73B96 处(位于 XXX.exe 中)引发的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000XXX
  15. Android Studio中Intent的一些相关知识
  16. 如何进入华为云服务器,【华为云入门】如何快速创建弹性云服务器
  17. Python+os+openpyxl 批量获取Excel的文件名和最大行数
  18. vue子组件调用父组件方法 回调
  19. Web中html个人介绍代码,web开发工程师自我介绍示例
  20. 九龙证券|游戏板块或继续迎来业绩估值“戴维斯双击”

热门文章

  1. 【AIOT】3.5 物联网传输协议介绍
  2. 汉白玉产地在哪里_汉白玉的产地 汉白玉是产自哪里的
  3. Mybatisplus 分页查询时,禁止自动统计总数
  4. centos 中止 nodejs_今日热点游戏新闻!守望先锋2有望2月推出;心跳回忆新作将登陆NS;莱莎炼金工房2实体版中止发售;2K21加载画面广告...
  5. 计算机cpu散热方式,调整电脑CPU散热风扇转速的简单方法【图文】
  6. 【高数】两类曲线积分的联系
  7. Java 诊断利器Arthas:快速入门
  8. 公众号文章下实现一键拨号功能
  9. 吴恩达机器学习作业ex2-python实现
  10. IPD-产品需求管理过程(2)