JS 学习笔记--11---内置对象(Global/Math)

  练习中使用的浏览器是IE10,如果各位朋友有不同意见或者遇到浏览器不兼容问题,希望指正 

1、内置对象的定义有ECMAScript实现提供的、不依赖与宿主环境的对象,在ECMAScript运行之前就已经创建好的对象就叫做内置对象。就是说,是不需要我们开发人员先是的实例化对象就能够调用和运行的对象。 在ECM-262中只是定义了两个内置对象 Global和Math对象

 

2、Global对象    

  Global(全局)对象是在ECMAScript中是一个特别的对象,因为这个对象是不存在的。在ECMAScript 中任何不属于其他对象的方法和属性都是这个对象的方法和属性。所有事实上并不存在什么全局属性和全局函数,因为一切全局的函数和属性都是这个Global对象的方法和属性。但是由于这个对象并不是真真存在的,并且ECMAScript也没有定义怎样定义和调用这个对象,故所有Global.属性和Global.()都是无效的,但是在WEB浏览器中中把Global对象作为window对象的一部分实现了,故一切的所谓的全局属性和方法都是window对象的方法和属性。

 1 //ECMAScript 中没有定义怎么调用Global对象,故Global.属性 或者Global.方法 都是无效的
 2 //Web浏览器中将global作为window对象的一部分来加以实现
 3     alert(window);    //object Window
 4     alert(Global);    //error Global not undefined
 5 
 6     var box='abc';
 7     alert(window.box);    //abc
 8     alert(Global.box);    //error
 9 
10     function run(){
11         return 'abc';
12     }
13     alert(window.run());    //abc
14     alert(global.run());    //error global not undefined
15     alert(Global.run());    //error global not undefined
View Code

 

3、URI编码方法--Global对象的内置方法    

  URI编码方法可以编码连接,以便发送给浏览器,采用特殊的UTF-8编码特殊的不认识的字符,比如在浏览器的地址栏中有汉字的时候,IE显示的结果就是编码的,如果不编码或者编码浏览器不认识,就会显示一个乱码结果就是找不到连接中所要请求的页面    

  encodeURI(box): 对变量box进行编码,但是这个方法不能够对URI本身特殊字符编码,比如 正斜杠,#,冒号,问号等不会编码,但是会编码汉字等   

  encodeURIComponent(box): 完全编码,它会将发现的URI中所有的非标准字符进行编码。因为编码彻底,故使用的频率要比不完全编码(encodeURI())方法多很多。

1 //编码方法 encodeURI()  encodeURIComponent()
2 //encodeURI()不会对斜杠,冒号问号和#等编码   encodeURIComponent则会对它发现的全部非标准字符进行编码
3     var box='//abc??123::hhh|||但是';
4     alert(box);
5     alert(encodeURI(box));            //结果为:  //abc??123::hhh%7C%7C%7C%E4%BD%86%E6%98%AF
6     alert(encodeURIComponent(box));    //结果为:    %2F%2Fabc%3F%3F123%3A%3Ahhh%7C%7C%7C%E4%BD%86%E6%98%AF
View Code

 

4、URI解码方法--Global对象的内置方法    

  通过上面两种编码方法进行编码的URI,可以通过解码方法进行解码。然后还原可读的URI    

  decodeURI(): 用来解码由编码方法 encodeURI()编码的URI    

  decodeURIComponent(): 用来解码由编码方法 encodeURIComponent() 编码的URI    

  解码方法和编码方法最好对应的使用,用什么方法编码,就用对应的方法进行解码,否则可能会造成解码不出来或者解码不完整

 1 //解码方法decodeURI()  decodeURIComponent()        解码方法必须要和编码的方法进行对应使用,否则可能解码不彻底
 2 //下面的例子中不完全解码就不能够解码完全编码中关于特殊字符的编码结果,虽然完全解码将不完全编码结果解码正确
 3 //但是也不要这样套用,函数、命令等最好是成套使用
 4     var box='//abc??123::hhh|||但是';
 5     var code1=encodeURI(box);    //用不完全编码方式进行编码
 6     var code2=encodeURIComponent(box);    //用完全编码方式进行编码        
 7     alert(decodeURI(code1));    //用不完全解码方式解码不完全编码结果:    //abc??123::hhh|||但是
 8     alert(decodeURI(code2));    //用不完全解码方式解码完全编码结果:    %2F%2Fabc%3F%3F123%3A%3Ahhh|||但是
 9     alert(decodeURIComponent(code1));    //用完全解码方式解码不完全编码结果://abc??123::hhh|||但是
10     alert(decodeURIComponent(code2));    //用完全解码方式解码完全编码结果:    //abc??123::hhh|||但是
View Code

 

5、eval 方法--Global对象内置方法    

  eval()方法是用来担当一个字符串解析器的作用,只是接收一个参数,而这个参数中就是要执行的JS代码,多余的参数会忽略的,此方法可能有返回值也可能没,要根据参数中的JS代码而定,在AJAX中传递参数的时候很有用    

  如果解析的字符串中的JS代码是定义变量,比如说数组对象,字符串等代码,则会返回这些定义结果,并且还原真正的类型;如果是定义一个函数或者调用一个函数,则没有返回值      

 1 //eval() 方法用来解析字符串,只是接受一个参数,这个参数中就是要执行的JS代码,在AJAX中用来传递参数很频繁使用
 2     var box='alert("wo shi zai zi fu chuan zhong di JS dai ma !!!")';
 3     alert(box);    // alert("wo shi zai zi fu chuan zhong di JS dai ma !!!")
 4     eval(box);    // wo shi zai zi fu chuan zhong di JS dai ma !!!
 5 
 6     var box='alert("abc")';    //注意要写正确这里面的JS代码
 7     alert(box);            //alert("abc")
 8     alert(eval(box));    //先输出:abc 这是eval解析字符串box的结果,然后输出 undefined 说明此时eval方法没有返回值
 9 
10 //下面方法说明,在eval方法解析某种字面量变量的时候,返回的就是这个字面量的值
11     var box="[3,4,5,6]";
12     alert(box);            // [3,4,5,6]
13     var res=eval(box);
14     alert(res);            // 3,4,5,6        eval() 方法将解析的结果返回,是一个数组
15 
16     var box='"234"';
17     alert(typeof eval(box));    //string
18     alert(eval(box));            //234

  如果字符串中定义有函数,或者变量等,和正则表达式中的一些属性一样,需要先执行以下,也就是说先解析一下(eval(box));然后后面的语句中就可以调用这个字符串中定义的方法了      

1 //如果字符串中含有方法或者变量的时候,是需要先解析一次字符串,然后就可以调用和执行字符串中的方法,
2     var box='var run=123;function sum(){return 123;}';
3     //alert(sum());    // error: not undefiend
4     //alert(run);        // error: not undefined
5     eval(box);        //解析一次,就将box中最原始的JS代码进行了还原,
6     alert(sum());    // 123    上面通过eval方法解析了字符串 box 知道定义了一个方法名为sum
7     alert(run);        //123

  eval() 方法虽然很好用,功能很强大,但是也是很危险的方法,因此在使用的时候应该谨慎使用。特别是在用户输入数据的时候,很可能会导致程序的安全性问题,比如代码注入等等

 

6、Global 内置的一些属性    

  有很多属性,比如 undefined,Array,NaN,Object,Function 等,alert(Array);返回的就是数组类型Array的构造函数,也就是调用Array.constructor 时候的返回值

 

7、window对象    

  前面说了,由于无法对Global对象进行全局访问,而Web对象把window对象当做全局对象来访问,alert(window.Array);的结果和上面是一样返回的是数组的构造方法

 

8、Math对象    

  Math对象是ECMAScript为了保存数学公式和信息而提供的一个对象,这个对象中的属性和方法的执行效率要比我们直接在JS中编写数学公式的效率高很多

9、Math对象的属性    

  Math对象的属性都是在平时的计算中很多时候都会用到的一些特殊的值,注意大小写  

  

属性说明
Math.E返回的是自然数e的值
Math.PI返回的是圆周率π的值
Math.LN2返回的是以自然数e为底,2的自然对数
Math.LN10返回的是以自然数e为底,10的自然对数
Math.LOG2E返回以2为底,自然数e的对数
Math.LOG10E返回的是以10为底,自然数e的对数
Math.SQRT2返回的是2的开平方根
Math.SQRT1_2返回的是1/2的平方根
 
 1 //Math 对象的属性    注意都是大写    下面这些属性都是Math对象内置的属性
 2     alert(Math.E);            // 自然数e:2.718281828459045
 3     alert(Math.PI);            // 圆周率π:3.141592653589793
 4     alert(Math.LN10);        // 10 的自然对数:2.302585092994046
 5     alert(Math.LN2);        // 2 的自然对数:0.6931471805599453
 6     alert(Math.LOG2E);        // 以2为底,e 的对数:1.4426950408889633
 7     alert(Math.LOG10E);        // 以 10 为底,e 的对数:0.4342944819032518
 8     alert(Math.SQRT2);        // 2 的开平方根:1.4142135623730951
 9     alert(Math.SQRT1_2);    // 1/2 的开平方根:0.7071067811865476
10 
11   //证明了上面这都是内置的一些属性
12     alert(Math.LN20);    //undefined
13     alert(Math.LOG5E);    //undefined
14     alert(Math.SQRT1_4);//undefined
15     alert(Math.SQRT9);    //undefined
View Code

 

10、min()、max() 方法    

  返回的是一组数中的最大值和最小值,前提是这一组数中必须全部能够成功的通过隐试转换成数值,也就是说可以包含数值型字符串,但是不能够包含非数值型字符串,否则会返回NaN。    

  不能够传递一个数组进去,返回的也是NaN,只能这样使用 Math.min(2,3,4,5,'7',1);

      

 1 // min() max()    用来求一组数中的最大值和最小值
 2     alert(Math.min(3,5,6,7,8,9));    //3
 3     alert(Math.max(3,5,6,7,8,9));    //9
 4 
 5   //数值行字符串自动转换
 6     alert(Math.min('3',4,9,10,'5','6'));    //3
 7     alert(Math.max('3',4,9,'10',5,'6'));    //10
 8 
 9   //如果不能够转换其中的任何一个数字,返回的是NaN;转换的时候应该是调用的Number(x)方法进行转换的
10     alert(Math.min('abc',4,9,10,'5','6'));    //NaN
11     alert(Math.max('abc',4,9,'10',5,'6'));    //NaN
12     alert(Math.max(3,4,9,10,5,'6abc'));        //NaN
13 
14   //不支持传递一个数组进去
15     var box=[2,3,4,5,6,7,8];
16     alert(Math.min(box));    //NaN
17     alert(Math.max(box));    //NaN
18     //alert(box.min());        //不提供此方法
19     alert(box.min);            //undefined
View Code

 

11、舍入方法    

  Math.ceil(num):将num向上舍入到里这个数最近的一个整数。Math.ceil(5.1)==6为true    

  Math.floor(num):将num向下舍去,即它总是将数值向下舍入为最接近的整数;取整    

  Math.round(num):四舍五入方法,    

  这些方法同样能够接收数值型的字符串('5'),因为内部会隐试的调用Number()转换方法,只是处理传入进去的第一个参数,其余的参数会被忽略掉

    

 1 // 舍入方法  ceil()    floor()    round()        只是接受一个参数,多余的会忽略掉
 2   //ceil() 方法  就是向上舍入,将小数点后面的数值向上舍入为最近的整数
 3     alert(Math.ceil(5.9));        //6
 4     alert(Math.ceil(5.5));        //6
 5     alert(Math.ceil(5.1));        //6
 6     alert(Math.ceil('5.1'));    //6        自动调用内置的转换方法Number()方法
 7     alert(Math.ceil('5.1a'));    //NaN
 8   
 9   //floor() 方法,就是向下舍去,将小数点后面的数值向下舍为最近的整数
10     alert(Math.floor(5.9));        //5
11     alert(Math.floor(5.5));        //5
12     alert(Math.floor(5.1));        //5
13     alert(Math.floor('5.1'));    //5        自动调用内置的转换方法 Number()方法
14     alert(Math.floor('5.1a'));    //NaN
15 
16   // round() 方法,对参数进行四舍五入
17     alert(Math.round(5.9));        //6
18     alert(Math.round(5.5));        //6
19     alert(Math.round(5.1));        //5
20     alert(Math.round('5.1'));    //5
21     alert(Math.round('5.1a'));    //NaN
22     
23     alert(Math.round(5.4,6.7));    //5
View Code

 

12、random 方法    

  这个方法是产生一个0到1之间的随机数,但是不包括0和1,Math.random() 即可    

  但是很多时候需要返回的是一个自定义的范围的随机数,可以采用一个公式:Math.floor(Math.random()*总数+起始数)。这个总数,并不是范围的结束数,而是通过计算而得:总数=结束数-起始数+1。由于随机数返回的是一个浮点数,故还要通过向下取整来进行舍入    

  可以通过函数的方法可以进行一个封装,传递两个参数,起始数和结尾数,返回一个符合此范围的随机数:  

    

 1 // 随机数  random 方法    用来返回的是0到1之间的一个随机数
 2     var box=Math.random();    // 产生一个0到1之间的随机数
 3     alert(box);
 4 
 5     //产生10个0到1之间的随机数,并且输出到界面上
 6     for(var i=0;i<10;i++){
 7         document.write(Math.random());
 8         document.write('<br />');
 9     }
10 
11     //产生的是9到14之间的随机数        本来是想产生5~10之间的整数
12     for(var i=0;i<10;i++){
13         document.write(Math.random()*10+5);
14         document.write("<br />");
15     }
16     
17     //为了解决上面的问题,可以采用公式:Math.random()*总数+起始数; 其中 总数=结束数-起始数+1;原因不解释
18     //接收两个参数,返回在这两个参数之间的随机整数。
19     function ran(start,end){
20         var count=end-start+1;
21         return Math.floor(Math.random()*count+start);//产生一个符合区间的随机数,然后向下取整,
22     }
23 
24     for(var i=0;i<10;i++){
25         document.write(ran(5,10));    //产生5~10之间的一个随机数
26         document.write("<br />");
27     }
View Code

 

13、其它的数学方法  

方法说明
Math.abs(num)返回数据 num 的绝对值
Math.exp(num)返回自然数 e 的 num 次方
Math.log(num)返回 num 关于自然数 e 的对数
Math.pow(num,power)返回数据 num 的 power 次方
Math.sqrt(num)返会 num 的开平方根
Math.sin(x)返回 x 的正弦值,x 是弧度单位
Math.cos(x)返回 x 的余弦值,x 是弧度单位
Math.tan(x)返回 x 的正切值,x 是弧度单位
Math.asin(x)返回 x 的反正弦值,返回的单位是弧度
Math.acos(x)返回 x 的反余弦值,返回的单位是弧度
Math.atan(x)返回 x 的反正切值,返回的单位是弧度
Math.atan2(x,y)返回的是 x/y 的反正切值,弧度单位
 

 

  求正切的时候结果不是很精确:alert(Math.tan(Math.PI/4)); //0.99999999999

 

 1 //其他的一些方法
 2     alert(Math.abs(-3));    //3    取绝对值方法
 3     alert(Math.exp(3));    //20.085536923187668    自然数 e 的3次方,传递的参数可变的
 4 
 5     alert(Math.LN10);    //属性,返回10的自然对数
 6     //返回一个数的自然对数,就是以 e 为底的自然对数
 7     alert(Math.log(10));
 8     alert(Math.log(100));
 9     alert(Math.log(9));
10     
11     // Math.pow(num,power)  返回的是num数据的power次幂
12     alert(Math.pow(2,3));    //8
13     alert(Math.pow(4,2));    //16
14 
15     // Math.sqrt(num)    返回数据 num 的平方根
16     //这两个是属性中的开平方根
17     alert(Math.SQRT2);
18     alert(Math.SQRT1_2);
19     //下面才是方法的使用
20     alert(Math.sqrt(9));    //3
21     alert(Math.sqrt(100));    //10
22 
23     // 三角函数  是以弧度为单位
24     alert(Math.sin(90));        //0.8939966636005578
25     alert(Math.sin(Math.PI/2));    //1
26     alert(Math.cos(Math.PI/4));        //余弦
27     alert(Math.tan(Math.PI/4));        //0.99999999999        正切
28     
29     //求反正切  Math.atan(x); 返回的也是弧度值        
30     alert(Math.atan(1));    //0.7853981633974483    
31     alert(Math.PI/4);        //0.7853981633974483
32     //Math.atan2(x,y);返回的是x/y的反正切值
33     alert(Math.atan2(4,2));    //1.1071487177940904
34     alert(Math.atan(2));    //1.1071487177940904
35 
36     //反余弦与反正弦
37     alert(Math.asin(1));    //1.5707963267948965
38     alert(Math.PI/2);        //1.5707963267948965
39     alert(Math.acos(1));    //0
40     alert(Math.acos(-1));    //3.141592653589793
41     alert(Math.PI);            //3.141592653589793
View Code

 

转载于:https://www.cnblogs.com/qigang/p/3520974.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 视图设计器

SQL Server 中经常需要写一些查询&#xff0c;关联好多张表&#xff0c;显示无数个列。如果使用视图设计器&#xff0c;可以大大提高效率&#xff0c;同是减少差错。1. 启动视图设计器为数据库“新建视图”&#xff0c;将启用视图设计器。2. 添加表在起始界面&#xff0c;将出现…

misc类设备驱动1——板载蜂鸣器驱动测试

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、驱动部分 1、前言 九鼎移植的内核已经提供了蜂鸣器驱动源码&#xff08;在SI中搜索关键字buzzer&#xff0c;发现出现有x210-buzzer.c文件&#xff1b;或者在make menuconfig界面搜索buzzer&am…

github和git@osc提交问题

为什么80%的码农都做不了架构师&#xff1f;>>> 今天想用gitosc push下测试下自己能否正常使用gitosc的git仓库的&#xff0c;公钥SSH 已经加好。 ssh -T gitgit.oschina.net 测试正常。 结果报错could not read Username for https://git.oschina.net: No such fi…

怎样跟踪来访用户?

某些监视方法是比较容易想到的&#xff0c;比如&#xff0c;当你登录网站的时候&#xff0c;它就可以知道你是谁了。但是这些网络监视系统是如何通过你的上网行为记录你的个人信息呢&#xff1f; 广告系统经常通过追踪用户行为的方法来建立用户信息库&#xff0c;以定位谁是目标…

【百度地图API】如何制作班级地理通讯录?LBS通讯录

原文:【百度地图API】如何制作班级地理通讯录&#xff1f;LBS通讯录摘要&#xff1a;班级通讯录必备的功能&#xff0c;比如人员列表&#xff0c;人员地理位置标注&#xff0c;展示复杂信息窗口&#xff0c;公交和驾车等。一般班级人员都不会超过300个&#xff0c;因为可以高效…

开发板——在X210开发板上进行裸机开发的流程

流程总结 本文以“LED流水灯”为例&#xff0c;说明在X210开发板上进行裸机开发的流程。 步骤一&#xff1a;搭建嵌入式Linux开发环境 在虚拟机中安装与配置Linux系统&#xff0c;并安装交叉编译工具链&#xff1b; 在win主机上安装dnw软件、九鼎烧写SD卡软件等内容。 步骤二&a…

zmail邮件系统安装手册 V2.0版本

2019独角兽企业重金招聘Python工程师标准>>> Tmail邮件系统安装手册 V2.0版本 1、系统环境 centos6.0以上&#xff0c;最小化安装(64位系统) 2、部署 1、删除自带的postfix、mysql、httpd # rpm -qa|grep postfix|xargs rpm -e --nodeps # rpm -qa|grep mysql|xargs…

Cassandra1.2文档学习(5)—— Snitch

参考资料&#xff1a;http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/architectureSnitchesAbout_c.html#concept_ds_c34_fqf_fk 一个snitch&#xff08;告密者&#xff09;决定应当从哪个数据数据中心和机架写入和读取数据。…

Entity Framework在WCF中序列化的问题(转)

问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象&#xff0c;那么对下面的错误一定不陌生。 接收对 http://localhost:5115/ReService.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。 这还可能是由于服务器中止了 HTTP …

【iHMI43 4.3寸液晶模块】demo例程(版本1.03)发布

技术论坛&#xff1a;http://www.eeschool.org 博客地址&#xff1a;http://xiaomagee.cnblogs.com 官方网店&#xff1a;http://i-board.taobao.com 银杏科技 GINGKO TECH. 保留权利&#xff0c;转载请注明出处 一、简介&#xff1a; 1、iHMI43 演示程序(版本号&#xff1a;1…

SDRAM——X210的SDRAM的初始化

以下内容源于朱友鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客&#xff1a;s5pv210——初始化SDRAM - biaohc - 博客园 这里说的SDRAM&#xff0c;简单点理解就是内存。 一、SDRAM的简介 1、SDRAM的含义 SDRAM是Syncronized Dynamic Ramdam Access Me…

单独一台机器测试Open×××加密隧道的问题和解决

其实这篇文章和Open的关系倒不是很大&#xff0c;只是通过Open测试时暴露出的问题。这篇文章里面倒是包含了很多IP路由以及conntrack的细节内容。 有时候&#xff0c;为了节省机器&#xff0c;我希望在一台设备上模拟多个设备&#xff0c;当然&#xff0c;使用网络命名空…

SCRT中只换行不回车的问题(阶梯)

转载源&#xff1a;SecureCRT中只换行不回车的问题 - 知乎 在SecureCRT中有时会遇到由于Windows的换行和Unix的换行控制字符不同的问题&#xff08;\r\n-\n&#xff09;&#xff0c;导致显示如下图所示的“阶梯”&#xff0c;又不想到源码中一个个改控制字符&#xff0c;此时可…

开发板——X210开发板的软开关(供电置锁)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、前言 本章节在裸机课程的SD卡启动部分。 本文讲述如何设置开发板&#xff0c;使得一按下电源键程序运行后即可松手不会断电&#xff0c;即供电置锁。 二、软开关的简介 电路设计一般使用拨码开…

国产Linux软件

为什么80%的码农都做不了架构师&#xff1f;>>> 本页面收集支持deepin/Linux的国产软件&#xff0c;对于每款软件以“日出东方-发行时间较短&#xff1b;正当壮年-时间较长且稳定&#xff1b;每况愈下-你们懂的”评价 软件版本时间评价有道词典 Linux版1.02015-03…

QGLViewer 编译安装步骤

由于工作学习的需要&#xff0c;要用opengl绘制显示些模型动画&#xff0c;原来用的是Qt做UI&#xff0c;直接调用的是QGLWidget类&#xff0c;但这个只是提供了基本的框架&#xff0c;很多交互操作还需添加代码完成&#xff0c;自己偷懒也觉得繁琐&#xff0c;就借用了开源的工…

LED——S5PV210的LED的理论与操作

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、LED物理特性介绍 LED本身有2个接线点&#xff0c;一个是LED的正极&#xff0c;一个是LED的负极。 LED的功能就是亮或者不亮&#xff0c;只需要给LED的正极加电压即可点亮LED&#xff0c;去掉电压…

“.公司”域名注册总量TOP15:新网问鼎 万网居亚

IDC评述网&#xff08;idcps.com&#xff09;01月16日报道&#xff1a;根据ntldstats.com发布的最新数据显示&#xff0c;截止至01月15日17:00&#xff0c;在“.公司”域名注册总量大战中&#xff0c;新网打败众多国内外域名服务商&#xff0c;成为新晋霸主&#xff0c;其“.公…

Prepare for Mac App Store Submission--为提交到Mac 应用商店做准备

返回 Mac App Store Prepare for Mac App Store Submission 提交到Mac 应用商店之前的准备 Most of your time is spent on coding tasks, but to develop for the Mac App Store, you need to perform a number of administrative tasks, using Xcode and other tools. You’l…

ARM通识——关于ARM的一些认识

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 注意&#xff0c;由于文章的撰写时间过早&#xff0c;很多内容没有更新&#xff0c;这里仅当一个通识了解。 1、ARM发展的里程碑 ARM的前身为艾康电脑&#xff08;Acorn&#xff09;&#xff0c;于…