数据类型

  • 数字 (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初体验(一)的更多相关文章

  1. 冒泡,快排算法之javascript初体验

    引子:javascript实际使用的排序算法在标准中没有定义,可能是冒泡或快排.不用数组原生的 sort() 方法来实现冒泡和快排. Part 1:冒泡排序(Bubble Sort) 原理:临近的两数 ...

  2. Handlebars的基本用法 Handlebars.js使用介绍 http://handlebarsjs.com/ Handlebars.js 模板引擎 javascript/jquery模板引擎——Handlebars初体验 handlebars.js 入门(1) 作为一名前端的你,必须掌握的模板引擎:Handlebars 前端数据模板handlebars与jquery整

    Handlebars的基本用法 使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Ha ...

  3. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

  4. Knockout.js初体验

    前不久在网上看到一个轻量级MVVM js类库叫Knockout.js,觉得很好奇,搜了一下Knockout.js相关资料,也初体验了一下,顿时感觉这个类库的设计很有意思.接下来就搞清楚什么是Knock ...

  5. SignalR初体验

    简介 ASP .NET SignalR[1]  是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以 ...

  6. node.js 初体验

    node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...

  7. grunt 构建工具(build tool)初体验

    操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/  直接点击install ,会根据你的操 ...

  8. VSTO学习笔记(十五)Office 2013 初体验

    原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...

  9. vue.js2.0 自定义组件初体验

    理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ...

随机推荐

  1. Fastjson使用实例

    Fastjson使用实例 一.FastJson使用范例 1.1FastJson三个核心类 1.2Maven依赖 1.3Scala API 1.3.1反序列化 1.3.2序列化 1.4Java API ...

  2. Redis集群搭建,伪分布式集群,即一台服务器6个redis节点

    Redis集群搭建,伪分布式集群,即一台服务器6个redis节点 一.Redis Cluster(Redis集群)简介 集群搭建需要的环境 二.搭建集群 2.1Redis的安装 2.2搭建6台redi ...

  3. Centos搭建Hive

    Centos搭建Hive 一.Hive简介 二.安装Hive 2.1hive下载 2.2上传解压 2.3配置hive相关的环境变量 三.Mysql 3.1安装mysql connector 3.2 将 ...

  4. (29)Vim 5

    Vim显示行号方法详解1.编辑时显示行号 在命令模式下输入":set nu"即可显示每一行的行号 如果想要取消行 号,则再次输入":set nonu"即可.2. ...

  5. Rsync同步工具

    1.Rsync介绍 1.1 什么是Rsync? Rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限.时间.软硬链接 ...

  6. docker学习二

    B站视频地址 3.docker的基本操作 3.1 安装docker 1.下载关于Docker的依赖环境 想安装Docker,需要先将依赖的环境全部下载下来,就像Maven依赖JDK一样 yum -y ...

  7. HarmonyOS单模块编译与源码导读

    我这里以3518的开发板为例进行讲解,3516的也是通用的. 下面是之前全量编译的脚本 python build.py ipcamera_hi3518ev300 -b debug HarmonyOS最 ...

  8. Java工作中的并发问题处理方法总结

    Java工作中常见的并发问题处理方法总结 好像挺久没有写博客了,趁着这段时间比较闲,特来总结一下在业务系统开发过程中遇到的并发问题及解决办法,希望能帮到大家 问题复现 1. "设备Aの奇怪分 ...

  9. spark sql优化

    1.内存优化 1.1.RDD RDD默认cache仅使用内存 可以看到使用默认cache时,四个分区只在内存中缓存了3个分区,4.4G的数据 使用kryo序列化+MEMORY_ONLY_SER 可以看 ...

  10. Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) C. Remove Adjacent(字符串,贪心,枚举)

    题意: 给你一个由小写字母组成的字符串,若串中两个相邻元素字典序中也相邻,移除较大字母,问最多能移除多少个字母. 思路: 从大到小依次枚举. Tips: 注意下标的处理. 以小消大: #include ...