JS的引入:

1 内部引入

  • 绑定元素事件如onclick=""
  • 绑定锚点如href="JavaScript:void(0)"
  • script标签引入,注意:如果标签放在head里面,不能操作放在body里面的scrip标签的内容

2 外部引入

  sript标签src属性引入,优先级比css高,位置一般在body内或者head到body之间,如果放置于body与html之间,或者html之外,会被自动修复置于body之内

JS注释:

  • 单行://
  • 多行:  /**/
  • html注释:单行多行都是<!-- -->
  • css注释:单行多行都是/**/

JS弹窗:

  • alert:弹出框,无返回值
  • confirm:确认框,返回true/false
  • prompt:请输入你的年龄,有2个参数1个返回值,1参是问题,2参默认结果,点击确认会返回输入结果

弹窗弹出时,代码会暂停执行直到弹窗关闭

  

JS变量:

  • 1 小写字母开始,每个单词的首字母大写
  • 2 变量不能用关键词和保留字
  • 3 变量尽量不要定义window属性名,ES5中全局变量都被设置在window的属性中(可能会数字变字符),起名时先看下是否window对象的属性名称一致
  • 4 临时变量或者参数使用下划线开始 var _time=20;

变量的连等赋值: var a = b = 20; 先给a赋值,再给b赋值

JS常量:

  一般用大写和下划线_连接,使用const关键字定义

  常量定义后的对象不能被清除,常量对象可以被修改属性,但常量对象和常量基本数据类型不能被赋值,因此常量不能用null清除引用

  

    <script>
const value = 1;
const obj = { x : 1};
// value = 2;//报错:Assignment to constant variable.
obj.x = 2;
console.log(obj);//{x:2}
obj = 2;////报错:Assignment to constant variable.
</script>

JavaScript共有7种数据类型:

  • number
  • string
  • boolean
  • null
  • undefined
  • object
  • Symbol

分类:

基本数据类型:

undefined、null、number、string、boolean是原生JS5种基本数据类型,Symbol是ES6之后加入的基本数据类型

复杂数据类型:

object是复杂数据类型

数据类型的存储:

前5种存在栈中,栈中变量名存储的是值,object存在堆中(对象数值类型也存储在堆中),栈中变量名存储的是堆中的地址

obj1 = obj;

obj1拿到的是obj的地址,不是地址中的内容,相当于拿到的是一把钥匙,而不是箱子.假设这个地址是#aaaaaa,那么开启这把箱子的钥匙就有两把,分别是obj和obj1,任何一把都能改变箱子里的内容,箱子里的内容一旦改变,那么任何一把钥匙在此后打开箱子后看到的都是改变后的值

此时obj对象的属性改变,obj1这把钥匙所能打开的箱子中的内容也改变,打开箱子之后看到的是改变之后的内容。

综上:

不论是对象还是前5原始数据类型,它们的变量名都存储在栈中

前5种基本数据类型的变量名在栈中存储的是值,但是它们的方法是通过相应的对象数据类型调用的,所以存取是栈调用,调用方法是堆调用,即对象调用

对象存储在堆中,栈中存储的对象变量名存储的是堆中的地址,堆中的属性改变,但是地址并不改变

数据类型

  数值型:
   undefined:NaN
   NaN:本身就是数值类型
   null : 0
   obj : NaN 
   string: 空串是0,Number('123'),parseInt('123') =123, Number('12a') = NaN,parseInt('12a') =12.
   boolean: true是1,false是0
        正整型 var a = 1; 
        负整型 var b = -1;
        浮点型 var c = 0.1;
        八进制数值: var d = 056;//禁用,打印时自动转换成10进制
        16进制:var e = 0xFF;
        var num6 = 1.2e+3; 1.2*1000  1.2e-3;1.2/1000
    
    布尔类型:
        boolean: true,false
    
    未定义型:
        undefined 值和类型相同都是undefined
   undefined转换成数值是NaN
   undefined转换成布尔值是false
      undefine == null是true
    空值:  
       null 类型是object
      空值转换成数值是0,转换成布尔值是false,空值==undefined是true
    
 对象
    冒号区分属性名和属性值,逗号区分各个属性
    对象转成字符串是object Object
    对象转成数字是NaN
      对象如果已赋值,转成布尔值是true
    对象如果未赋值则是undefined,转成布尔值是false
    两个对象是否相等,依据的是引用地址是否相等
    

        var obj = {x:1};
var obj2 = obj;
obj2.x = 3;
console.log(obj2 == obj);//true
console.log(obj2 === obj);//true obj = {x:1};//{x:1}是个新对象,与上个对象引用地址不等
console.log(obj2 == obj);//false
console.log(obj2 === obj);//false

JS内存管理

    前5种基础类型都存储在栈中
    对象存储在堆中
    但是它们调用的方法都是调用堆中的方法
    基础类型仅仅存取的话只在栈中
    对象的变量名(地址)存储在栈中,
    地址指向堆中的对象内容
    变量名存储的是引用地址
    var obj2 = obj;
    存在栈中的修改的是值(类型)
    存在堆中的修改的是引用地址值的内容,地址不会发生改变
    对象的传递,操作的是栈,传递的是引用
 
 

JS内存泄漏:

    栈里的东西如函数名会自动清除
    堆里面的东西不会自动清除(内存泄漏)
    内存泄漏:不断地创建新对象,不使用的旧对象不清除,造成内存泄漏
                 谷歌浏览器做了优化能自动清除一些
    如何清除对象?给变量设置为null
    不用的对象一定要赋值为null,但是常量不能被这样清除,因为已经定义的常量不能改变为null
 
 

JS垃圾回收

  对象的引用地址在栈中没有引用时,内存占比过高时,垃圾回收机制会不定时将其清除
 

数据类型的转换:

转换为数字:
        1 Number(隐式转换)
        2 parseInt\ParseFloat   parseInt(num,2):将字符串或者数字num转成2进制
  区别:
    Number()可以将任意转换成数值,parseInt()主要将字符串或者数字转换成进制数值,默认是10进制
    Number('4a')是NaN,parseInt('4a')是4
转换为字符串:
        String(a)
        obj.toString(进制)  将数字或者字符数字转换成相应进制的字符数字,默认是10进制
        ""+obj
转换成布尔值
        Boolean()
        除了0,''(或'‘),false,NaN,null,undefined是false,其他都是true
转换成对象
        null是object类型,undefined数据类型和值相同都是undefined,
  在使用Object()转换成对象类型时,object和undefined和其他都是object类型

  

  

 
 
 

27 JavaScript的引入&注释&弹窗&变量常量&数据类型及转换&内存&垃圾回收的更多相关文章

  1. 编程语言类别;运行Python程序的方式;变量和常量;Python程序的垃圾回收机制;

    目录 编程语言分类 运行Python程序的两种方式 1.交互式 变量与常量 1.变量 2.常量 3.小整数池 垃圾回收机制 编程语言分类 编程语言分为: 1.机器语言:直接用二进制的0和1和计算机(C ...

  2. .net学习之类与对象、new关键字、构造函数、常量和只读变量、枚举、结构、垃圾回收、静态成员、静态类等

    1.类与对象的关系类是对一类事务的统称,是抽象的,不能拿来直接使用,比如汽车,没有具体指哪一辆汽车对象是一个具体存在的,看的见,摸得着的,可以拿来直接使用,比如我家的那辆刚刚买的新汽车,就是具体的对象 ...

  3. (4)C#变量,常量,数据类型,转义字符,数据类型转换

    一.变量 程序运行期间能够被改变的量称为变量. 变量名称要用小写字母开头,避免用下划线开头. 如果包含多个单词,从第二个单词开始首字母都要大写. 定义并初始化 double pi = 3.14 二.常 ...

  4. 变量、数据类型、python内存管理

    pycharm快捷键 ctrl + c 复制, 默认复制整行 ctrl + v 粘贴 ctrl + x 剪切 ctrl + a 全选 ctrl + z 撤销 ctrl + f 查找 ctrl + sh ...

  5. 编程语言和python介绍, 变量,小整数池,垃圾回收机制

    1.编程语言的发展史 计算机是基于电工作(基于高.低电平)1010010101011 1.机器语言 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言(通过英文字符组成) 优点:执行效率相较于机器 ...

  6. python---01.各类计算机语言,python历史,变量,常量,数据类型,if条件

    一.认识计算机 1.硬件组成: CPU(大脑)  + 内存(缓冲) + 主板(连接各部分) + 电源(心脏)      + 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 2.操作系统 ①windows  ...

  7. 【七天搞定Python】day01.Python环境配置、pip、IDE、注释、变量,数据类型、标识符/关键字、输出、输入

    什么是Python? 动态解释型语言,1982年由荷兰人Guido von Rossum发明. 更多细节可以google,这里不做展开. Python解释器: CPython(官方版本C语言实现) I ...

  8. Java - 变量常量数据类型

    标识符命名规范 可以有字母数字下划线和美元符组成, hello abc 不能以数字开头 123abc 严格区分大小写 void Void 不能是java的关键字和保留字 class 标识符必须是见名知 ...

  9. Dart学习笔记-变量常量数据类型

    变量和常量 1.变量的定义 main() { var t_str = 'hello world'; var t_num = 123456; String t_str2 = '你好,我很高兴'; int ...

随机推荐

  1. MySQL5.7的参数优化

    https://www.cnblogs.com/zhjh256/p/9260636.html query_cache_size = 0query_cache_type=0innodb_undo_tab ...

  2. 配置SSH使用密钥认证:实现免输入密码登陆

    一.实际工作生产场景分析 张三是某公司员工,由于业务上的需求,需要经常使用SSH工具登陆服务器A的root账户进行操作,为避免重复进行密码验证身份.现采用张山的公钥发送给服务器A,免输入密码登陆到服务 ...

  3. Python记: 列表:Python的主力

    ——————————————————————————我将青春翻涌成它...... 本节主要讨论列表不同于元组和字符串的地方__________列表是可变的,即可修改内容.另外,列表有很多特有的方法. ...

  4. Oracle 11G在用EXP 导入、导出时,若有空表对导入导出中遇到的问题的解决

    11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segmen ...

  5. kali&BT5下利用nmap对mysql等数据库渗透与爆破

    如今Nmap的脚本引擎从一个普通的端口扫描器转变为具有攻击性的渗透测试工具 .随着nmap各种脚本的存在.到目前为止,我们甚至可以进行完整的SQL数据库渗透而不需要任何其他的工具. 今天就在kali下 ...

  6. springmvc、 springboot 项目全局异常处理

    异常在项目中那是不可避免的,通常情况下,我们需要对全局异常进行处理,下面介绍两种比较常用的情况. 准备工作: 在捕获到异常的时候,我们通常需要返回给前端错误码,错误信息等,所以我们需要手动封装一个js ...

  7. linux 网卡限速

    #安装git yum -y install git #下载wondershaper git clone  https://github.com/magnific0/wondershaper.git 第 ...

  8. TXT文件也能挂木马

    什么?TXT文件也能挂马?是的!TXT文件不仅有挂马的危险,而且有时候可能非常的危险!不过,严格说来,应该给这个所谓的"TXT"文件加个引号,因为它们是看起来是TXT文件,实则是隐 ...

  9. shell脚本编程学习笔记(二)linux服务器启动流程

    一.linux服务器启动流程 1.bios找到磁盘上的mbr主引导扇区 2.进入grub洁面选择相应的启动内核 3.读取kernel内核文件-/boot/vmlinuz-* 4.读取init的镜像文件 ...

  10. 作业1:使用go搭建一个web-server

    todo1:搭建web-server的原理 todo2:go实现web-server