Javascript变量和属性的区别

变量和属性在javascript中的区别


在很多文章中都说变量其实就是属性,但是它们之间有一定的区别,例如:

在全局作用域下,

var a = "hello";

b = "hello";

从字面上看,它们的区别是一个前面加了var,一个没有;它们的相同点都是全局的;

那么a称之为变量,只不过它是全局变量;

b称之为属性,它是window对象的属性,因为在全局作用域下,浏览器默认会创建一个window对象,凡是通过全局定义的类似b = "hello",那么b称之为window对象的一个属性,你可以在chrome的console下打印window.b,结果是hello。


还有一个差别是变量不可以通过delete进行删除,但是属性可以通过delete进行删除;

执行下面的动作:

delete a;

a;"hello",说明a没有被删除;

delete b;

b; undefined, 说明b已经被删除了。

再举下面的例子来说明他们之间的另一个细微的差别:

运行下面语句之前并没有对mynamespace进行声明。

var myNameSpace1 =myNameSpace1 || {};

myNameSpace2 = myNameSpace2|| {};

运行之后你会发现第一行语句可以运行成功,并且myNameSpace1= {};

但是第二行会抛出exception,出现myNameSpace2is not defined.

首先区分一下undefined和 xxxis not defined,这两个是不一样的,如果一个变量是undefined,那么说明这个变量被声明了,只是没有被定义,不知道用来干什么,但是它是有值的,为undefined。

var a; 打印a的值为undefined。

但是xxxis not defined是从来没有在内存中出现过的东西,如果你要打印它或者用它,都会接收到异常。

举一个现实中的例子,undefined表示你已被某个公司录用,但是还没有给你工号,以及分配部门,但是你去前台登记以及进入部门都是可以被允许的;

xxxis not defined是一个陌生人在公司了,会直接被保安挡住。

回到刚才var myNameSpace1 = myNameSpace1|| {};例子上,为什么它可以通过,是因为执行的时候,首先执行var myNameSpace1, 那么系统会把此myNameSpace1变量设为undefined,等号后面再取myNameSpace1会在全局环境下找变量myNameSpace1,发现myNameSpace1是undefined,所以一个undefined的变量可以赋值给其他变量。


myNameSpace2 =myNameSpace2 || {};执行失败的原因如下:

等号前面的myNameSpace2,javascript会把它当成是window对象的属性;

而等号后面的myNameSpace2,会把它当成是一个变量;

那么把myNameSpace2变量的值赋给window对象的属性myNameSpace2,就会出错,是因为myNameSpace2变量从来没有被声明过,所以会产生异常。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: JavaScript 定义字符串变量的方法有两种: 1. 使用单引号或双引号将字符串括起来: ``` var str = 'hello'; var str = "hello"; ``` 2. 使用 `String` 构造函数: ``` var str = new String('hello'); ``` 使用字符串变量的方法有很多,下面列举几个常用的: - 获取字符串长度:使用 `length` 属性 - 查找子字符串:使用 `indexOf()` 方法 - 提取子字符串:使用 `substring()` 方法 - 拼接字符串:使用 `concat()` 方法或者加号(+)运算符 - 将字符串转换为大写/小写:使用 `toUpperCase()`/`toLowerCase()` 方法 例如: ``` var str = 'hello'; console.log(str.length); // 5 console.log(str.indexOf('l')); // 2 console.log(str.substring(2, 4)); // 'll' str = str.concat(' world'); console.log(str); // 'hello world' console.log(str.toUpperCase()); // 'HELLO WORLD' ``` ### 回答2: JavaScript可以通过使用关键字`var`或`let`来定义字符串变量。下面是几种定义和使用字符串变量的示例: 1. 使用var关键字定义字符串变量: ```javascript var myString = "这是一个字符串变量。"; console.log(myString); // 输出:这是一个字符串变量。 ``` 2. 使用let关键字定义字符串变量: ```javascript let myString = "这是一个字符串变量。"; console.log(myString); // 输出:这是一个字符串变量。 ``` 3. 字符串拼接: ```javascript let str1 = "Hello"; let str2 = "World!"; let combinedString = str1 + " " + str2; console.log(combinedString); // 输出:Hello World! ``` 4. 获取字符串的长度: ```javascript let myString = "这是一个字符串变量。"; let stringLength = myString.length; console.log(stringLength); // 输出:9 ``` 5. 字符串索引: ```javascript let myString = "JavaScript"; console.log(myString[0]); // 输出:J console.log(myString[4]); // 输出:S ``` 6. 使用字符串方法: ```javascript let myString = "Hello World!"; console.log(myString.toUpperCase()); // 输出:HELLO WORLD! console.log(myString.toLowerCase()); // 输出:hello world! console.log(myString.indexOf("World")); // 输出:6 console.log(myString.slice(6, 11)); // 输出:World ``` 总之,JavaScript可以使用关键字var或let来定义字符串变量,并且可以使用字符串方法来操作和处理字符串。 ### 回答3: JavaScript可以通过关键字"var"或者"let"来定义字符串变量。例如: 1. 使用var关键字定义字符串变量: ```javascript var greeting = "Hello"; var name = "World"; var message = greeting + ", " + name + "!"; console.log(message); // 输出: Hello, World! ``` 2. 使用let关键字定义字符串变量: ```javascript let greeting = "Hello"; let name = "World"; let message = `${greeting}, ${name}!`; console.log(message); // 输出: Hello, World! ``` 在JavaScript,字符串变量可以使用单引号或双引号括起来。例如: ```javascript var singleQuoteString = 'This is a single quote string'; var doubleQuoteString = "This is a double quote string"; ``` 还可以使用反引号(`)来定义模板字符串,其可以插入变量或表达式。例如: ```javascript let name = "Alice"; let age = 25; let message = `My name is ${name} and I'm ${age} years old.`; console.log(message); // 输出: My name is Alice and I'm 25 years old. ``` 字符串变量还可以使用一些内置的字符串方法,如`length`属性用于获取字符串的长度,`toUpperCase()`方法用于将字符串转换为大写,`toLowerCase()`方法用于将字符串转换为小写,等等。 总之,JavaScript可以使用关键字var或let来定义字符串变量,并且可以使用单引号、双引号、或者反引号(模板字符串)来定义字符串内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值