鸿蒙HarmonyOS基础语法-循环-类型转化-事件
变量命名规则
1,只能包含数字、字母、下划线、$,不能以数字开头(4种类型)
2,不能使用内置关键字或保留字(比如 let、const)
3,严格区分大小写
声明方式 变量字符串,数字,布尔(与TS一致)
let str:string = '你好'
let age:number = 20
let flag:boolean = false
声明数组(与TS一致)
let arr:string[] = ['李四', '王五']
let ageArr:number[] = [100,200,300]
声明常量-使用const
const userAccountId:string = '20250412'
声明对象(与TS一致)
interface Person{
name:string,
age:number,
like:string[],
fightWay:()=> void // 战斗方法,没有返回值
sya: (cont:string)=> string // 返回字符串
}
let luofengObj:Person = {
name:'罗峰',
age:200,
like:['战斗'],
fightWay:()=>{
console.log('开始战斗')
},
sya: (mess:string)=> {
return '你好' + mess
}
}
let str:string = 'heel'
console.log(luofengObj.sya('金角巨兽'))
注意点:必须要实现接口中的每一个字段。接口首字母一般大写
联合类型
// 联合类型,既可以是数字也可以是字符串
let grade:number | string
grade = '优化'
grade = 98
约束类型(与ts一致)
// 约束值sex只能是其中的一种
let sex: '男' | '女' | '未知'
sex ='男' // ok
sex = 0 // 报错
枚举类型
枚举类型是一种特殊的数据类型,约定的变量只能在一组数据范围内选择值
我们可以使用枚举类型,约束变量。
语法:
enum 枚举名 {
常量1 = 值,
常量2 = 值
}
enum ThemeBgColor {
Red = '#ff0f28',
Green = '#30b30e'
}
// color被枚举ThemeBgColor修饰,它的值只能是 ThemeBgColor中的值
let color:ThemeBgColor = ThemeBgColor.Red // ok
let color2:ThemeBgColor = ThemeBgColor.Err // 报错,因为不存在这个
let color3:ThemeBgColor = '#ffffff' // 报错,因为 ,它的值只能是 ThemeBgColor中的值
函数
// 实现一个函数:苹果5元1斤,买5斤需要多少钱
function payMoney(many:number){
let price:number = 5
return price * many
}
console.log("需要多少钱", payMoney(10))
箭头函数
let buyMoney = (many:number, price:number)=>{
return price * many
}
let howMoney:number = buyMoney(10,2)
console.log('购买多少钱', howMoney)
循环数组的几种常见办法:for循环;for of循环;ForEach
let arrLike = ['看长腿','唱歌','打游戏']
for (let item of arrLike){
console.log('每一项', item)
}
声明对象数组,与TS一样的
interface Person{
name:string,
age:number,
like:string[]
}
let arrLike:Person[]=[
{
name:'张三',
age:19,
like:['看长腿','唱歌','打游戏']
},
{
name:'李四',
age:21,
like:['看美女']
}
]
for (let item of arrLike){
console.log('每一项', item)
}
+ 号
注意点:左右两边都是字符的话,起到连接的作用。
如果左右两边都是数字,起到相加的作用。
模板字符串
模板字符串作用:拼接字符串和变量
优势:更适合于多个变量的字符串拼接
let userName:string = "张三"
let age:number = 13
console.log(`${userName}今年${age}岁`)
字符串转数字
Number():将数字类型的字符串直接转为数字,转换失败返回NaN(字符串中包含非数字内容,就会转失败)
parseInt():去掉小数部分转为整数,转换失败返回NaN。
解析过程:依次解析有效字符,遇到无效字符停止。
会忽略前导空格:如 parseInt(" 123") 返回 123
符号处理:识别 + 或 -,如 parseInt("-123") 返回 -123。
parseFloat():保留小数部分转数字,转换失败返回NaN。转换规则跟parseInt()一样,只是它保留小数部分的值
Number 例子
let str1:string = "123"
let str2:string = "123bb"
let str3:string = "CC123bb"
console.log('str1',Number(str1)) // 123
console.log('str2',Number(str2)) // NaN (字符串中包含非数字内容,就会转失败)
console.log('str3',Number(str3)) // NaN 字符串中包含非数字内容,就会转失败)
parseInt 例子
let str1:string = "123"
let str2:string = "123bb"
let str3:string = "CC123bb"
console.log('str1',parseInt(str1)) // 123
console.log('str2',parseInt(str2)) // 123 解析过程:依次解析有效字符,遇到无效字符停止
console.log('str3',parseInt(str3)) // NaN 一开始就是无效字符,因此会是NaN
parseFloat例子
let str1:string = "123 "
let str2:string = " 123.234bb"
let str3:string = "123.13ccc12bb"
let str4:string = "cc123.ccc12bb"
console.log('str1',parseFloat(str1)) // 123
console.log('str2',parseFloat(str2)) // 123.234
console.log('str3',parseFloat(str3)) // 123.13
console.log('str4',parseFloat(str4)) // NaN
tostring()数字转字符串
tostring():数字直接转字符串
let num1:number = 123
let num2:number = 123.234
console.log('num1',num1.toString()) // 123
console.log('num2',num2.toString()) // 123.234
toFixed是4舍6入,5看情况
toFixed(): 是4舍6入,5看情况,可设置保留几位小数。
let num1:number = 123
let num2:number = 1.15
console.log('num1',num1.toFixed()) // 123
console.log('num2',num2.toFixed(1)) // 1.1 输出的是"1.1" 不是 “1.2”。 说明toFixed并不完全的是是舍五入
点击事件
说明:组件被点击时触发的事件
作用:监听用户点击的行为,然后进行对应操作
语法:onclick((参数)=>{})
@Entry
@Component
struct Index {
build() {
Column(){
Text('点我').onClick(()=>{
AlertDialog.show({
message:'我出来啦'
})
})
}
}
}
状态管理
普通变量:只能在初始化时渲染,后续即使变量发生变化后,ui界面也不会再跟新。
状态变量:需要装饰器装饰@State,值发生改变会引起ui界面的重新渲染(必须设置类型和初始值)
需要注意:定义在组件内 普通变量 或 状态变量,都需要 通过 this 访问
普通变量
@Entry
@Component
struct Index {
// 组件内声明变量,不需要使用关键字let
myName:string = '张三' // 普通变量,后续即使变量发生变化后,ui界面也不会再跟新。
build() {
Column(){
// 组件内访问变量,需要使用this
Text(this.myName).width(100).height(40).backgroundColor(Color.Pink)
.textAlign(TextAlign.Center).margin({left:10,bottom:10})
Button('点我').width(100).onClick(()=>{
// 是一个普通变量。后续即使变量发生变化后,ui界面也不会再跟新。
this.myName = '李四'
AlertDialog.show({
message:'更改值'
})
})
}
}
}
状态变量
@Entry
@Component
struct Index {
// 组件内声明变量,不需要使用关键字let
@State myName:string = '张三' // 状态变量,发生变化后,会自动跟新视图
build() {
Column(){
// 组件内访问变量,需要使用this
Text(this.myName).width(100).height(40).backgroundColor(Color.Pink).textAlign(TextAlign.Center).margin({left:10,bottom:10})
Button('点我').width(100).onClick(()=>{
this.myName = '李四'
AlertDialog.show({
message:'更改值'
})
})
}
}
}
简单的计数器案例
@Entry
@Component
struct Index {
@State num:number = 1 // 状态变量,发生变化后,会自动跟新视图
build() {
Column(){
Row(){
Button("-").onClick(()=>{
this.num = this.num - 1 // 等价与 this.num -= 1
})
Text(this.num.toString()).margin({ left:10, right:10})
Button("+").onClick(()=>{
this.num = this.num+ 1 // 等价与 this.num += 1
})
}.padding({left:10})
}
}
}
使用ForEach循环Text组件
ForEach语法:
ForEach(数据,(item:类型,index:number)=>{
Text()
})
@Entry
@Component
struct Index {
@State likeArr:string[] = ['看长腿','唱歌','打游戏', '追剧','跳舞','打LOL']
build() {
Column(){
// 多行多列的时候,使用Flex布局;
// 单行单列的时候 使用线性布局
Flex({
wrap:FlexWrap.Wrap
}){
// 这里使用ForEach循环组件
ForEach(this.likeArr,(item:string,index:number)=>{
Text(item).height(40).backgroundColor(Color.Pink).padding({left:10, right:10}).margin({left:10, right:10, bottom:10})
})
}
}
}
}
鸿蒙HarmonyOS基础语法-循环-类型转化-事件的更多相关文章
- JavaScript学习笔记-基础语法、类型、变量
基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...
- 基础语法-循环结构for
基础语法-循环结构for 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.for循环格式 for(初始化表达式;循环条件表达式;循环后的操作表达式){ 执行语句(循环体); } ...
- 基础语法-循环结构do...while
基础语法-循环结构do...while 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.do...while语句格式 do{ 执行语句; }while(条件表达式); 温馨提示: ...
- 基础语法-循环结构while
基础语法-循环结构while 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.while语句格式 while(条件表达式){ 执行语句; } 二.while语句案例 /** * ...
- go基础语法-循环语句
1.基础定义 for语句的条件不需要括号(同if语句) ,golang里的循环只有for,没有while sum := 0 for i=0;i<100;i++ { sum += i } 2.条件 ...
- JS基础语法---循环语句之:for 循环 + 9个练习
for循环 语法: for(表达式1;表达式2;表达式3){ 循环体; } 执行过程: 先执行一次表达式1,然后判断表达式2;如果不成立则直接跳出循环 如果表达式2成立,执行循环体的代码,结束后,跳到 ...
- Groovy系列(3)- Groovy基础语法
Groovy基础语法 动态类型 Groovy定义变量时:可以用Groovy风格的def声明,不指定类型:也可以兼容Java风格,指定变量类型:甚至还可以省略def或类型 def t1 = 't1' S ...
- Asp.net 面向接口可扩展框架之类型转化基础服务
新框架正在逐步完善,可喜可贺的是基础服务部分初具模样了,给大家分享一下 由于基础服务涉及面太广,也没开发完,这篇只介绍其中的类型转化部分,命名为类型转化基础服务,其实就是基础服务模块的类型转化子模块 ...
- Mysql基础1-基础语法-字段类型
主要: 基础 字段类型 基础 基本概念 1) 数据库分类 层次数据库,网状数据库,关系数据库 常见:SQL Server, Oracle,infomix,sybase,ibmDB2,Mysql 2)数 ...
- JavaScript的基础语法及DOM元素和事件
一,JavaScript是什么? 1,JavaScript简称:js,是一种浏览器解释型语言,嵌套在HTML文件中交给浏览器解释执行.主要用来实现网页的动态效果,用户交互及前后端的数据传输等. 2,J ...
随机推荐
- IvorySQL 4.0 之兼容 Oracle 包功能设计思路解读
日前,IvorySQL 4.0 发布,该版本新增了兼容 Oracle 包功能的新特性. 为了大家能够更好地理解和使用 IvorySQL 4.0,本文将简要介绍实现此功能时的设计思路. Oracle 的 ...
- Proxmox VE安装CentOS 8.3
相信玩服务器/VPS的对CentOS一定不陌生,CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本.因为是免费的,现在很多WEB服务器和VPS都经常使 ...
- 《机器人SLAM导航核心技术与实战》第1季:第7章_SLAM中的数学基础
<机器人SLAM导航核心技术与实战>第1季:第7章_SLAM中的数学基础 视频讲解 [第1季]7.第7章_SLAM中的数学基础-视频讲解 [第1季]7.1.第7章_SLAM中的数学基础_S ...
- springboot集成docker实现自动化构建镜像说明
springboot集成docker实现自动化构建镜像说明 文档说明 该文档仅包括通过配置springboot.docker.jenkins.git.appollo等实现持续构建,持续发布的功能,不包 ...
- Chrome 135 版本开发者工具(DevTools)更新内容
Chrome 135 版本开发者工具(DevTools)更新内容 一.性能(Performance)面板改进 1. 性能面板中的配置文件和函数调用现已显示来源和脚本链接 Performance > ...
- iOS自动化测试环境搭建总结
1.关于iOS真机和模拟器自动化环境搭建 参考博文: Appium+Python3+iOS真机环境搭建 iOS自动化测试:mac下iOS10 appium测试环境的搭建 IOS + Appium自动化 ...
- 依赖注入的方式( 构造函数注入 、 set 方法注入 、注解注入)
一.构造函数注入 二.set方式注入 三.集合注入
- Spring Bean的声明方式
一.环境说明 项目结构 StudentService package com.cookie.service; /** * @author cxq * @version 1.0 * @date 2020 ...
- WPF静态资源StaticResource和动态资源DynamicResource有什么区别,x:Static又是什么意思?
什么叫WPF的资源(Resource) 资源是保存在可执行文件中的一种不可执行数据.WPF中资源用ResourceDictionary类表示,这个类就是一个字典,字典的key和value都是objec ...
- wordpress插件开发时如何通过js调用图库/媒体选择器的问题
效果: 原文地址: wordpress插件开发通过js调用图库/媒体选择器的问题 - 搜栈网 (seekstack.cn)