当前位置: 首页 > news >正文

Harmony鸿蒙开发0基础入门到精通Day01--JavaScript篇

简介

鸿蒙是最近几年比较新的一种前端开发语言,其中集成了大量的组件与函数,在原有的前端基础上进行更加完美的扩展与升级。

所以在学习鸿蒙之前,我们需要知道它是怎么来的,这样有助于我们的扩展学习与转型。

发展历程

我们鸿蒙所使用的开发语言,名为ArkTs,也被叫做ArkUI

他是由前端开发语言JS(JavaScript)一步步升级完善升级而推出的新语言。

JavaScript ------->TypeScript --------> ArkTs

入门

所以在学习鸿蒙开发之前,我们需要学习JavaScript,将这个基础打好之后,我们才会进一步继续推进。

这样一来,我们不仅能够简单掌握鸿蒙开发语言,还能够对前端其他语言的转型提供方便。

我不会耽误大家太多的时间,直接开始学习。

JavaScript(基础)

是一种前端开发语言,常常搭配html,css一起使用,相信大家在学习阶段已经对此有过了解,我就不在这里过多赘述,就带大家简单的回顾一下。

JS的组成:ECMAScript(语法规范)  BOM(浏览器对象模型)   DOM(文档对象模型)

变量声明方式 ,一般用var定义变量,在后续版本中还会有其他的方式,例如let const

基本数据类型:number boolean string null undefined

引用数据类型:function(函数) Array(数组)Object(对象)

注释://单行注释      /**/多行文本注释

控制台打印:console.log()

script的三种引入方式:

        外联式:<script src="路径"></script> 【路径:当前路径./  上一级../ 下一级 /

        内联式:<script></script>

        行内式:一般搭配事件结合去使用

【规范:建议写在html中body下面,页面从上往下执行,否则出错过后可读性不好。】

定义变量: var 名 = 值 ------->【无需指定值的类型,系统会自动区分。】

// 定义数字
var num = 10;
// 控制台打印
console.log(num)
// 定义字符串
var str = "hello world!"// 定义布尔值
var b1 = true
var b2 = false// 定义数组
var arr = [1, 2, 3, false,{},[],8.9]
console.log(arr[2])
// 定义对象
var obj = {name: '张三',age: 18,sex: '男'
}
console.log(obj.name)
// 定义函数
function fn() {var x = 50console.log(x)// return 20
}
fn()//打印50
console.log(fn())//undefined  ----------->当没有返回值的时候,默认是这个值
//函数中的return: 1.函数的返回值  2.终止程序执行

js中的类型转换

非字符串类型转字符串

两种转换方式:1.String() 2.toString方法

注意:undefined,null不能使用toString方法进行转换。

举个栗子,其他类型转String照葫芦画瓢。

var n1 = 18;
var r1 = String(n1)
console.log(r1)var n2 = 180;// toString(进制)
var r2 = n2.toString(2)// 计算机存储的进制最大是36进制  常用的就是2,8,10,16进制
console.log(r2)

小技巧:在控制台打印的时候,颜色与其他的不同

非数字类型转数字类型

三种转换方式:

Number() 

ParseInt()      取整数部分,从变量左侧开始依次向右判断遇到非数字就会停止转换

ParseFloat()  取整数+小数部分,从变量左侧开始依次向右判断遇到非数字就会停止转换

注意:Number当一个无法转成数字想要使用方法,结果为NaN---->not a number 但属于数字类型。

值得注意的错误:


console.log(Number(null))//0
console.log(parseInt(null))//NaN
console.log(parseFloat(null))//NaNconsole.log(Number(undefined))//NaN
console.log(parseInt(undefined))//NaN
console.log(parseFloat(undefined))//NaN

非布尔值转换为布尔值

Boolean()

注意: 0,'',false,null,undefined,NaN 转换为布尔值都是false,其余都是true

typeof

       判断元素类型,仅仅支持基本数据类型

        用法:typeof 变量名

运算符

算数运算符: +   -    *    /   % 【加减乘除】

逻辑运算符:||   &&   !   【与或非】

比较运算符:>   <   >=   <=   !=   !== ==   ===

赋值运算符:=  +=   -=   *=   /=   %=

一元运算符:i++   ++i   i--   --i

【注意:当其他类型与字符串相加时,会发生字符串拼接。】

var n1 = 10;
var n2 = '20';
// 此时这里是字符串拼接
console.log(n1+n2)//'1020'

【%表示取余,取余数。】

// % 取余 
var n1 = 7
var n2 = 3
console.log(n1%n2)//1
console.log(n2%n1)//3

==和===的区别:

==只比较数值,而===比较数值和类型。

if与switch

if 语句

if (condition)
{
    当条件为 true 时执行的代码
}

if...else 语句

if (condition)
{
    当条件为 true 时执行的代码
}
else
{
    当条件不为 true 时执行的代码
}

if...else if...else 语句

if (condition1)
{
    当条件 1 为 true 时执行的代码
}
else if (condition2)
{
    当条件 2 为 true 时执行的代码
}

.......
else
{
  当条件 1 ,条件 2..... 都不为 true 时执行的代码
}

switch 语句

switch(n)
{
    case 1:
        执行代码块 1
        break;
    case 2:
        执行代码块 2
        break;
    default:
        与 case 1 和 case 2 不同时执行的代码
}

【注意:没有break的时候,会出现穿透现象,不会跳出。】

案例:90-100分为优  80-90 良  60-80 可 0-60 差

/**** 使用switch实现范围的匹配* 比如分数为93分,switch中的case:10  case 9 case 8....* 如何拿到93中的9?* 93/10=9.3-> parseInt(93/10)* * ***/// 需求:90-100分为优  80-90 良  60-80 可 0-60 差
// 使用if实现分支
var sc = 88;
if (sc >= 90 && sc <= 100) {console.log('优')
} else if (sc >= 80 && sc < 90) {console.log('良')
} else if (sc >= 60 && sc < 80) {console.log('可')
} else if (sc >= 0 && sc < 60) {console.log('差')
} else {console.log('错误数据!!!')
}let score = 93;
let value = parseInt(score / 10);
// console.log(value);// let value = prompt("请输入分数:")switch (value) {case 10:console.log("满分");break;case 9:console.log("优");break;case 8:console.log("良");breakcase 7:case 6:console.log("可");case 5:case 4:case 3:case 2:case 1:case 0:console.log("差");break;default:console.log("请输入正确的分数!!!");break;}

循环结构

循环分为三大类:for循环 while循环 do……while循环

for (语句 1; 语句 2; 语句 3)
{
    被执行的代码块
}

举例子:

for (var i=0; i<5; i++)
{
      x=x + "该数字为 " + i + "<br>";
}

while (条件)
{
    需要执行的代码
}

例:

lei i=0;

while (i<5)
{
    x=x + "The number is " + i + "<br>";
    i++;
}

do
{
    需要执行的代码
}while (条件)

例:

lei i=0;
{
    x=x + "The number is " + i + "<br>";
    i++;
}while (i<5)

break与continue语句

break 语句可用于跳出循环。

for (i=0;i<10;i++)
{
    if (i==3)
    {
        break;
    }
    x=x + "The number is " + i + "<br>";
}

当i=3时,结束循环。

continue 语句中断当前的循环中的迭代,然后继续循环下一个迭代。

for (i=0;i<=10;i++)
{
    if (i==3) continue;
    x=x + "The number is " + i + "<br>";
}

当i=3时,跳过本次循环,继续下一次循环。

函数

语法:function 函数名(){}

匿名函数:let 变量名 = function(){}

举个栗子:

var x = function (a, b) {return a * b};
var z = x(4, 3);

函数声明后不会立即执行,会在我们需要的时候调用到。

在使用var,function关键字的时候,会有代码提升的能力。

myFunction(5);function myFunction(y) {return y * y;
}

正因为function有代码提升的能力,所以即便是代码从上往下执行,上方的代码是能够正常执行的。

注意事项:

当匿名函数使用var关键字的时候,会出现问题。

myFunction(5);

var myFunction = function(y) {
    return y * y;
}

这里错误的原因是,当var关键生效,则var myFunction 被提升了,而后面的内容不会提升,只有当代码执行到这里,myFunction才会被函数赋值。

作业

1.利用循环在控制台输出 1-100之和
2.利用循环求 1 ~100 之间所有 3 的倍数的和
求: 3 + 6 + 9 + … + 99
3.在控制台输出 1000 ~ 2000 之间所有的闰年,要求四个一行
4. 在控制台输出 20 ~ 40 之间所有的质数

console.log("-----1.利用循环在控制台输出 1-100之和---------------------");
// 1.利用循环在控制台输出 1-100之和
let sum = 0;
for (let i = 1; i <= 100; i++) {sum += i;
}
console.log(sum);
console.log("----------2.利用循环求 1 ~100 之间所有 3 的倍数的和----------------");
// 2.利用循环求 1 ~100 之间所有 3 的倍数的和
// 求: 3 + 6 + 9 + … + 99
let s = 0;
for (let i = 1; i <= 100; i++) {if (!(i % 3)) {s += i;}
}
console.log(s);console.log("-----3.在控制台输出 1000 ~ 2000 之间所有的闰年,要求四个一行---------------------");
// 3.在控制台输出 1000 ~ 2000 之间所有的闰年,要求四个一行let str = ""
let cnt = 0;
for (let i = 1000; i <= 2000; i++) {if (y(i)) {str += i + " "cnt++;}if (cnt == 4) {console.log(str);cnt = 0;str = ''}
}function y(n) {if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)return truereturn false
}console.log("-----4. 在控制台输出 20 ~ 40 之间所有的质数---------------------");
// 4. 在控制台输出 20 ~ 40 之间所有的质数
for (let i = 20; i <= 40; i++) {if (ff(i)) {console.log(i);}
}function ff(n) {for (let i = 2; i < n; i++) {if (n % i == 0) {return false}}return true
}

http://www.dtcms.com/a/507798.html

相关文章:

  • CCIE好像越来越销声匿迹了......
  • 自己做ppt网站汕头网站制作哪里好
  • UVa 1344 Tian Ji The Horse Racing
  • 网站交换链接友情链接的作用网站地图制作
  • 【给服务器安装服务器安装nacos】
  • 影楼模板网站html5风格网站特色
  • Spark的Shuffle过程
  • 前端HTML常用基础标
  • 智能井盖传感器如何成为智慧城市“无声卫士”?
  • Django Web 开发系列(一):视图基础与 URL 路由配置全解析
  • 【python】在Django中,执行原生SQL查询
  • 5 个 Windows 故障排除工具
  • 云南网站建设招商交换友情链接的渠道
  • 在SCNet使用异构海光DCU 部署文心21B大模型报错HIP out of memory(未调通)
  • 嘉兴网站建设优化温州快速建站公司
  • 西安自助建站公司网站没有做404页面
  • 解决Vcenter告警datastore存储容量不足问题
  • 骆驼重链抗体免疫文库构建:从动物免疫到文库质控的关键技术解析
  • BearPi小熊派 鸿蒙开发入门笔记(1)
  • 湖州品牌网站设计wordpress侧栏导航栏
  • 使用EasyExcel生成下拉列表
  • 解密面向对象三大特征:封装、继承、多态
  • 未来之窗昭和仙君(二十六)复制指定元素内容到剪贴板——东方仙盟筑基期
  • nginx压缩包在windows下如何启动和停止使用nginx
  • 桐城住房和城乡建设局网站汶上网站建设多少钱
  • 一个外贸网站要多大的空间比较好帝国cms 网站地图插件
  • 国产DSP芯片FT6678的UART接口详解C++软件开发,嵌入式软件开发,Linux
  • 第十二周 waf绕过和前端加密绕过
  • 时间服务器练习
  • access数据库做网站互联网舆情忻州