在鸿蒙中横爬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<string,string|number>  = {
  "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

​编辑

 

未完待续 持续更新中 

华为官方学习班级

​

posted @ 2025-08-10 12:45  大雷神  阅读(265)  评论(0)    收藏  举报