在鸿蒙中横爬JavaScript代码,踩坑指南
开局一张图 画个几个圈圈祝您发财 发大财 财源滚滚来,这几个圈真的很有意思,多看看收获更多
画完图直接开干 写的就是真实
打开鸿蒙开发者工具(DevEco Studio)没有工具的可以下载一个,全程下一步安装就可以了,如果安装有问题的 ,可以看这里 DevEco Studio使用文档,新建一个Page页面就可以开工了
第一个问题JS写哪个地方?
第二个问题JS声明的变量能不能在鸿蒙代码中直接使用?把刚才的错误代码移除(也就是第十行)
可以在鸿蒙页面声明JS变量 然后直接使用,但是不能修改,原因后面文章专门介绍数据驱动
第三个问题 JS声明可以随便来吗? 有没有限制
鸿蒙中不能使用var来声明变量了, 只能用let ,用了var会报错
在鸿蒙冲变量用let 常量用const
第四个问题 鸿蒙中能否随意改变数据类型?
答案是不能 声明的时候不指定数据类似 ,赋值以后会有默认的数据
建议的写法如下 加上数据类型就可以了
let username:string = \"我是大雷神\";let userage:number = 10
是的看到这里,您已经发现了 鸿蒙的代码和TypeScript很像,基本上差不多
第五个问题:能自动推断对象类型吗?
直接报错,不能声明对象
用interface或者class都可以解决
interface ObjModel{ username:string, userage:number}let obj:ObjModel = { username:\"leson\", userage:18}
偷个懒行不行 可以的使用 Record
let info:Record = { \"username\":\"lili\", \"userage\":\"20\"}
第六个问题 鸿蒙中能不能用any,有替代any的方式没
用any会报错 但是用它可以
查看ESObject内部定义,会有惊人发现 怎么看内部 按住Ctrl+鼠标左键
意不意外 惊不惊喜
所以当你不会声明数据类型的时候,就用ESObject,这个发现值得一个赞
结论鸿蒙中能用any 但是您不能直接使用any
第七个问题 鸿蒙中有哪些数据类型?
基本类型:string、number、boolean、null、undefined、bigint等
引用类型:Object、 Array、Function、Map、Set、Class、Interface等
枚举类型:Enum 联合类型:Union 类型别名:Type Aliases
这些是和TS差不多的
第八个问题 鸿蒙中数据容器都是线性的吗?(我自己问自己的,因为你们都不知道,我们就知道List Array,但是是面试的高频问题)
线性容器实现能按顺序访问的数据结构,其底层主要通过数组实现,包括ArrayList、Vector、List、LinkedList、Deque、Queue和Stack
非线性容器实现能快速查找的数据结构,其底层通过hash或者红黑树实现,包括HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray七种。非线性容器中的key及value的类型均满足ECMA标准
具体的使用 这里不讲,因为今天是来横爬代码的,具体细节
第九个问题 判断 循环是不是一样用?
判断语句是一样的,但是有个巨坑,就是在鸿蒙中console.log里面只能输出字符串
只能输出字符串 只能输出字符串! 这需要无情的嘲讽三遍
经过大佬们的补充 嘲讽有点过 , 可以这么使用
console.log(\"内容\",1);//看底层定义如下
只要修复这个问题以后 鸿蒙中 判断,循环真是一样的
let num:number = Math.round(Math.random()*100)//随机生成0到100的数当分数if(num>=60){ console.log(`${num}`,\"及格\")}else{ console.log(`${num}`,\"不及格\")}for(let i = 0 ;i<100;i++){ console.log(\"结果为\"+i)}
第十个问题:es6+的方法是不是都可以用?
禁用特性(这些不能用了,要哭啊)
-
对象解构(
const {name} = obj;
) -
对象展开运算符(
{...obj1, ...obj2}
) -
动态
this
绑定(call
/apply
/bind
)
直接炸
解决方案
第十一个问题:对象都不能解构了,对象属性还能直接循环吗?
双杀 全部都要死 O(∩_∩)O哈哈~
解决方案:用Object.keys帮忙 然后再去循环集合
第十二个问题 面向对象一样使用
class可以正常用 构造函数 原型链 嗝了
黄种人继承人类
解决方案 extends
未完待续 持续更新中
华为官方学习班级