javascript初体验(一)
数据类型
- 数字 (Number),整数或浮点数,例如42或3.14159
- 字符串 (String)
- 布尔值 (Boolean)
- null (js大小写敏感,因此null和NULL不一样)
- undefined (变量被声明了,但是没有赋值时)
- Symbol (es6中新添加的类型,一种实例是唯一且不可改变的数据类型)
- Object
类型检查
- typeof (可以区别:数值,字符串,布尔值,undefined,function,返回结果是字符串)(不能区别:null和对象,对象和数组)
- instanceof (专门用来判断对象数据类型:Object,Array,function)
- === (undefined,null)
var a;
console.log(a, typeof a, typeof a === "undefined", a === undefined)
//undefined undefined true true
var b = 10;
console.log(typeof b, typeof b === "number")
//number true
var c = true;
console.log(typeof c)
//boolean
var e = "hello"
console.log(typeof e)
//string
var d = null;
console.log(typeof d)
//object
var f = {}
console.log(typeof f)
//object
var g = []
console.log(typeof g)
//object
console.log("---------------------")
var obj = {
obj1: [100, "hello"],
obj2: function () {
}
}
console.log(obj instanceof Object)
//true
console.log(obj.obj1 instanceof Array, obj.obj1 instanceof Object)
//true true
console.log(obj.obj2 instanceof Function, obj.obj2 instanceof Object)
//true true
console.log(obj instanceof Function)
//false
console.log("-----------------------")
console.log(typeof obj)
//object
-
console.log(typeof obj.obj1)
//object
console.log(typeof obj.obj2)
//function
console.log(b instanceof Object)
//false
var h = null
console.log(typeof h, h === null)
//object true
console.log('------------')
严格类型检查 ( == 和 === )
var i = 100;
var j = "100"
console.log(i == j, i === j)
console.log(undefined == null, undefined === null)
console.log(true == 1, true === 1)
引用变量赋值
var obj1={name:"tom"}
function fun (obj){
obj={name:"jack"}
}
fun(obj1)
数据传递
function changeAge(obj){
obj={age:50}
//obj.age=50
}
- 这两种赋值方式不一样,第一种改变了obj的指针指向
函数的调用
function setAge(age){
this.age=age;
}
var p1=new person("tom");
-----------call
这个时候setAge和person是没有关系的
setAge.call(p1,30)
将setAge绑定到p1上,相当于p1.setAge
-----------apply
setAge.apply(p1,[30,20])
************call和apply的区别是call参数是用逗号隔开的,apply是写在数组里
回调函数
常见的回调函数:DOM事件函数、定时器函数、ajax回调函数、生命周期回调函数
IIFE(匿名函数自调用)
- 隐藏内部实现
- 不污染外部命名空间
- 用它来编码js模块·
(function(){
var a=0;
function add(){
return ++a;
}
//将add函数暴露给外界调用
window.$=function(){
return {add:add}
}
})()
函数中的this
当函数被实例化以后,this不再指向window,而是指向实例化对象
function Person(name){
this.name=name;
this.setName=function(name){
this.name=name;
}
this.getName=function(){
return this.name;
}
}
new Person("tom")
- 函数中的this是一个引用变量,哪个实例对象调用的函数,this就指向这个实例
var setName=p1.setName;
setName("rose");
console.log(p1.name)
注意:这里调用setName函数的是window
javascript初体验(一)的更多相关文章
- 冒泡,快排算法之javascript初体验
引子:javascript实际使用的排序算法在标准中没有定义,可能是冒泡或快排.不用数组原生的 sort() 方法来实现冒泡和快排. Part 1:冒泡排序(Bubble Sort) 原理:临近的两数 ...
- Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整
Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
- Knockout.js初体验
前不久在网上看到一个轻量级MVVM js类库叫Knockout.js,觉得很好奇,搜了一下Knockout.js相关资料,也初体验了一下,顿时感觉这个类库的设计很有意思.接下来就搞清楚什么是Knock ...
- SignalR初体验
简介 ASP .NET SignalR[1] 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以 ...
- node.js 初体验
node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...
- grunt 构建工具(build tool)初体验
操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/ 直接点击install ,会根据你的操 ...
- VSTO学习笔记(十五)Office 2013 初体验
原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...
- vue.js2.0 自定义组件初体验
理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ...
随机推荐
- Redis,JedisPool工具类
Redis,JedisPool工具类 1.JedisPool 详细配置解释代码 2.Jedis工具类 导入相关依赖: commons-pool2-2.3.jar jedis-2.7.0.jar 1.J ...
- Java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json
对象转换为Json 对象bean转换为Json List集合转换为Json 对象数组转换为Json Map集合转换为Json Set集合转为Json 字符串转换为Json 把Java对常用的一些数据转 ...
- Java 8教程(知识内容详细,快速学习Java 8)
允许在接口中有默认方法实现 Lambda表达式 函数式接口 方法和构造函数引用 Lambda的范围 内置函数式接口 Predicates Functions Suppliers Consumers C ...
- 浅聊ARP
今天借用思科公司的Cisco Packet Tracer Student这款软件浅聊ARP 什么是ARP? ARP即地址解析协议(Address Resolution Protocol),是根据Ip地 ...
- Spring 事务、异步和循环依赖有什么关系?
前言 在循环依赖中有一种循环依赖,就是自注入:自己依赖自己. 事务的自注入 在 Spring 自调用事务失效,你是怎么解决的? 有小伙伴提出可以自己注入自己来解决事务失效. 具体使用方式如下: @Sl ...
- 图的深度优先遍历算法(DFS)
搜索算法有很多种,本次文章主要分享图(无向图)的深度优先算法.深度优先算法(DFS)主要是应用于搜索中,早期是在爬虫中使用.其主要的思想有如下: 1.先访问一个节点v,然后标记为已被访问过2.找到第一 ...
- Redis 实战 —— 14. Redis 的 Lua 脚本编程
简介 Redis 从 2.6 版本开始引入使用 Lua 编程语言进行的服务器端脚本编程功能,这个功能可以让用户直接在 Redis 内部执行各种操作,从而达到简化代码并提高性能的作用. P248 在不编 ...
- Pytest(15)pytest分布式执行用例
前言 平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完 当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间 ...
- hdu4686 Arc of Dream
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission ...
- 牛客编程巅峰赛S1第6场 - 黄金&钻石&王者 C.星球游戏 (单源最短路,Dijkstra)
题意:有\(n\)个点,\(m\)条双向边,两个方向的权值都是相等的,可以从\(A\)中的某个点出发走到\(B\)中的某个点,求所有路径中的最短距离,如果A和B中没有点联通,则输出\(-1\). 题解 ...