JS 变量 相关内容
JS变量按存储方式区分为哪些类型?:
js变量按照存储方式分为两种类型:值类型 和 引用类型
1.值类型(基本类型):
布尔值(boolean) 、 null 、undefined 、数值(number)、字符串( string) 、Symbol(表示独一无二的值)
2.引用类型:
对象(Object)、数组(Array)、函数(Function)
JS中使用typeof 能得到哪些类型:
typeof 可以得到的类型有:undefined、string、boolean、number、object、function
console.log(typeof undefined) //undefined
console.log(typeof 'abc') //string
console.log(typeof true) //boolean
console.log(typeof 123) //number
console.log(typeof {}) //object
console.log(typeof []) //object
console.log(typeof null) //object
console.log(typeof console.log) //function
注:typeof null ,结果是object 。原因在于,null类型被当做一个空对象引用
引用类型可以是instanceof 来判断:
console.log({} instanceof Object)
console.log([] instanceof Array)
值类型和引用类型的区别:
值类型:
1. 占用空间固定,存储在栈中
2.随着方法的执行结束,这个方法的内存栈也将自然销毁
3. 保存预付制的是本身
4. 使用typeof监测数据的类型
引用类型:
1.占用空间不固定,存储在堆中,栈中只存储对象的地址
2.堆中的对象不会随着方法的结束而销毁,只要有一个变量所引用,这个对象就不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会回收它。
3. 保存与复制的是指向对象的一个指针
4. 使用 instanceof检测数据类型
显式类型转换:
1. 显式类型转换 Number(arg)
输入的arg是原始类型的情况:
数值:转换后还是原来的值 。eg: Number(123) // 123
字符串:如果可以解析为数值,则转换为相应的数值,否则为NaN。空字符串转换为:0。
eg: Number('123') // 123 ; Number('123df') //NaN Number('') // 0
布尔值: true转换为1,false转换为 0。eg:Number(true) // 1; Number(false) // 0
undefined: 转换成NaN。 eg: Number(undefined) // NaN
null: 转换成0 。 eg: Number(null) // 0
arg是对象类型的情况:
先调用对象自身的valueOf()方法,如果该方法返回原始数据类型,则直接对该值使用Number方法,不再进行后续步骤。
如果valueOf()放回的是复合数据类型,再调用对象自身的toString(),如果toString()返回的是原始数据类型的值,则对该值使用Number(),不在进行后续步骤。
如果toString()返回的是复合数据类型的值,则报错。
2. 显式类型转换 String(arg)
arg是原始类型的情况:
数值:转换为相应的字符串 。eg: String(123) // '123'
字符串:转换后还是原来的值 eg: String('ab') // 'ab';
布尔值: true转换为"true",false转换为 "false"。eg:String(true) // 'true' ; String(false) // 'false'
undefined: 转换成"undefined"。 eg: String(undefined) // "undefined"
null: 转换成"null" 。 eg: String(null) // "null"
arg是对象类型的情况:
先调用toString()方法,如果toString()返回的是原始数据类型,则对该值使用String()方法,不再进行以下步骤。
如果toString方法返回的是复合数据类型的值,再对该值使用valueOf方法,如果valueOf()返回的是原始数据类型的值,则对该值使用String方法,不在进行以下步骤。
如果valueOf方法返回的是复合类型的值,则报错。
3. 显式类型转换 Boolean(arg)
只有当arg是 undefined 、null、 -0 、+0 、NaN 、''(空字符串)时 将转换为false,否则其他的情况一律转换为true;
隐式类型转换:
1. 四则运算
console.log(100 + '10') //
console.log(100 - '10') //
console.log(100 * '10') //
console.log(100 / '10') //
console.log(100 % '10') //
2. 判断语句
var a = 100;
if(a){ //数值 100 转成 布尔值 true
//....
}
var b = '';
if(b){ //将字符串'' 转成 布尔值 false
//....
}
3. Native调用 (console.log 和 alert 自动转换为字符串类型)
4.==运算符
console.log(123 == '123') //true
console.log(0 == '') //true
console.log(null == undefined) //true
5.逻辑运算符
console.log(10 && 0) //0 10转成ture
console.log('' || 'abc') // 'abc' ''转成false
console.log(!window.a) //true
Javascript中 何时使用 " ===" 何时使用 "=="?
使用“===”情况:
通常情况下,我们都需要写成“===”。因为“===”不用进行类型转换。在大部分浏览器中“===” 比 "=="速度更快。
使用“==”情况:
使用“==”的情况很少,有两种情况下使用:
1.判断对象的属性是否存在
var obj = {};
if(obj.a == null){
//这里相当于 obj.a === null || obj.a === undefined 的简写形式
//这是jquery源码中推荐写法
}
2. 判断函数的参数是否存在:
function fn(a,b){
if(b == null){
//这里相当于 b=== null || b===undefined 的简写形式
}
}
JS中有哪些内置函数(抛开浏览器 只谈javascript)
Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
如何理解JSON
1. JSON,是一种数据格式,在于后端的数据交互中较为广泛的应用
2. JSON 也是JS 对象,常用API:JSON,string()和json.parse()
JS 变量 相关内容的更多相关文章
- JS动态增加删除UL节点LI及相关内容示例
<ul id="ul"> <li id=1>11111111111111111<a href="javascript:del(1);&quo ...
- JS规则 多样化的我(变量赋值)我们使用"="号给变量存储内容,你可以把任何东西存储在变量里,如数值、字符串、布尔值等,
多样化的我(变量赋值) 我们可以把变量看做一个盒子,盒子用来存放物品,那如何在变量中存储内容呢? 我们使用"="号给变量存储内容,看下面的语句: var mynum = 5 ; / ...
- Django模板语言相关内容
Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言中按此语法使用:{{ 变量名 ...
- iframe子页面与父页面元素的访问以及js变量的访问
1.子页面访问父页面元素 parent.document.getElementById('id')和document相关的方法都可以这样用 2.父页面访问子页面元素 document.getEle ...
- Django模板语言相关内容 Djan
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Django——模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- 6月15日 python学习总结 Django模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- js变量及其作用域(附例子及讲解)
Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量 工具/原料 Ch ...
- javascirpt对象运用与JS变量
abcdefghijklmnopqrstuvwyz String 对象方法 charAt() 方法可返回指定位置的字符.stringObject.charAt(index)(index从0开始)[ht ...
随机推荐
- 搞懂分布式技术14:Spring Boot使用注解集成Redis缓存
本文内容参考网络,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutor ...
- 前端每日实战:57# 视频演示如何用纯 CSS 创作一双黑暗中的眼睛
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/xzYVzO 可交互视频 此视频是可 ...
- JS-拷贝对象
As it is well known to us all, 拷贝对象分为浅拷贝和深拷贝,深拷贝只会复制地址,深拷贝才会复制内容,那么 JS 如何进行这两种拷贝呢? # 浅拷贝 ## Object.a ...
- 19. HTTP协议二:HTTP请求与响应、常见状态码
HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...
- 14. Django MTV及Django模型
MTV 我们或许都听说过MVC模式.MVC是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码.Django ...
- windbg show args after breakpoint
bp ntdll!NtOpenFile ".echo ####################;du poi(ebp+8);.echo ########################;&q ...
- Python Numpy 矩阵级基本操作(2)
1.开方与求e指数 import numpy as np from numpy.matlib import randn print "Test sqrt and exp" arr ...
- Tomcat启动脚本(3)setclasspath.bat
@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor lic ...
- Sqlplus常用指令
一.ORACLE的启动和关闭1.在单机环境下2.在双机环境下二.Oracle数据库有哪几种启动方式1.startup nomount 非安装启动,这种方式启动下可执行:重建控制文件.重建数据库2.st ...
- 实用的Python(2)利用Python制作gif动图
一.简介 moviepy是一个专门用于视频剪辑制作的模块,可以自动化完成很多繁琐的视频剪辑处理工作,除了处理视频数据之外,moviepy中还内置了可以制作gif动图的功能,通过使用moviepy.ed ...