设X,y为正数,且x+y/4=10,其中(x>4/y),则x-y/4的最小值?谢谢

于是先使用对象字面量创建对象的部分属性,然后在通过赋值方式定义其他属性。当然也可以为彼此赋值

数组是一种特殊的对象,它的属性是从0开始的连续非负整数,而且有一个名为length的对应属性。之所以说数组特殊,主要是因为不能使用常规的对象字面量来创建它,必须使用另一种专用语法:

这种专用语法实际上是用来创建属性0,1,2...,还有length的。当然,length属性也很特殊:为它赋值可以扩大或缩小数组,那么新增属性会被设定为undefined。另外,在超过数组长度的某个位置上赋值也可以扩大数组。

基于某个分隔符拆分(split)字符串、切割(slice)现有数组都可以创建新数组,另外把两个数组拼接(concat)起来也可以创建新数组。反之,把数组元素连接(join)起来可以创建一个由同一个分隔符分隔的字符串:

注意,使用slice切割数组b中从位置2到位置5的元素,返回数组是[ b[2],b[3],b[4] ]。换句话说,切割得到的数组包含位于切割起点的元素,包含位于切割终点的元素;和substring截取字符串的操作相同。a.slice(x,y),则返回a[x]和a[y-1]构成的数组。还有另外两种slice操作:

拆分字符串的split操作不会修改原字符串、切割slice)、拼接(concat)和连接(join)数组元素也不会修改原数组。不过。确实有一些操作会修改数组对象本身。比如,可以使用push在数组末尾、使用unshift在数组开头添加元素;反之,可以使用pop在数组末尾、使用shift在数组开头删除元素。另外,还可使用reverse反转数组元素的顺序,使用sort对数组元素进行排序。这些会修改数组本身的操作为可变操作(mutator)。

JavaScript默认是将所有的数组元素都当成字符串来排序的,就算数组中包含数值、布尔值、对象或别的数据也一样。既然是按字符串排序,那排序标准就是字母表,因此字符串"1"小于"10",后者有小于"2"(就如同"foot"小于"football",后者又小于"goal")。实际上也可以按照数值进行排序,具体后面章节会介绍。

  • 把数组放到对象字面量中,或者反之,可以创造出任何复杂的数组结构:

实践中,我们会使用对象(单独)描述一种具体的事物,如裙子、人、歌曲和坐标点等等,会用数组描述一组事物,如一张专辑中的歌曲或一个多边形的顶点。数组也不是构造数据集合的唯一方式。

  • 把变量song和triangle用图表示出来,包括引用的对象。(PS大法...这书实在啊,教JS顺便复习PS基础操作:)

答:图就免了,pop();会删除数组末尾元素并返回,之后被unshift()接收,添加至数组头部,需要注意的是,由于数组长度不变,删除末尾元素后,只是a[3]的值变为undefined,所以最后a数组内元素是:[4,1,2,3,undefined]

目前,接触到的从操作符,如:

如果让操作符搭配一个或多个"错误的"的类型会怎么样?

通过以上实验,可以看出操作符搭配错误的类型,不仅不会报错,还会正常显示。通过类型转换以有意义的方式处理了错误类型的值。

  • 转换为数值:false被转换为0true被转换为1,字符串为转换成可能的值,null被转换成0;如果无法把字符转换成数值,则转换成NaN。对象x会调用x.valueOf()

  • 转换为布尔值:0、空字符串("")、nullundefinedNaN。其他值都被转换成true。false一般称为假值,true则为真值;

  • 转换为字符串:JavaScript会按常理处理,如例子所示。只是对象x会调用x.toString(),具体后面会讨论。
    关于valueOf和toString的详细解释,&&与||其实他们并不是真的需要比较布尔值,后续继续讨论。


由于存在隐式数据类型转换,JavaScript被称为弱类型编程语言。在强类型编程语言中,由错误类型值构成的表达式会导致错误。如果脚本里含有这种"病句",要么不会被允许执行,要么干脆直接停止工作,要么会在问题表达式被求值时抛出异常。

有时候,这种自动类型转换会造成一些意外。比如isNaN有时会产生一些难以理解的行为,我们知道它的作用是判断某个值是不是非数值(Not a Number)。一般来说,我们会觉得布尔值、字符串、null会被判定为非数值,但实验表明并非如此。

看来,应该把isNaN的作用解读为"不能转换成数值"。再比如数值与字符串间的转换,也是不可避免会碰到的:

alert(x+y); // 结果是拼接后的字符串,而非数学意义上的加法

每次提示都输入2,结果是22,因为对prompt求值的结果总是字符串,而+操作符又同时适用于数值和字符串。如果提示框显示x-y,执行的那就是数值减法。因为-在JavaScript只能用于数值,所以得到的字符串都会先被转换成数值。当然,乘法和除法也是"安全的"。但不管怎样,在数值和字符串相遇的时候,你总得自己多加小心才是。


鉴于字符串与数值间的转换容易出问题,很多JavaScript程序员倾向于在代码中显式地实现字符串到数值的转换。

前三个表达式使用了-*/,作为数值操作符,它们会在执行计算(在这里都是无效计算)之前把字符串转换成数值。第四个表达式也使用了一个数值操作符,叫做一元加。把它放到数值前面,不会产生任何操作,而与之对应的一元减操作符就不一样了。

由于一元加需要一个数值参与计算,因此如果它后面是一个字符串,JavaScript就会把这个字符串转换成数值。使用+把字符串转换成数值的做法显得有点神秘,但这种技术很方便,而且也并不少见。类似这种的编程方法被称为:习语,对外人并不显见,必须习而得之。

不过,很多程序员并不使用这种方式,因为效率低:JavaScript引擎在运行以上代码时会额外多做一些工作,导致脚本执行速度降低,内存占用增多。究其原因,就是Number生成的并非基本类型值,而是一个包装着数值的对象,这个对象在被当成数值使用时会把数值拿出来。对象比基本类型值更让JavaScript引擎费劲,一方面创建对象需要分配空间,而在不需要对象时,还要销毁对象。然而,有时候可读性确实比效率更重要,也可以使用Number。


还可以使用parseFloat及parseInt显式把字符串转换成数值。转换从字符串开头开始,但不一定转换整个字符串,而且首尾的空格会被忽略。

// 除了+、-、数字、小数点、科学计数法(E或e)这些符号,其他的字符本身以及后面的所有字符都会被忽略 // 如果参数字符串第一个字符串不能被解析为数字,会直接返回NaN

parseFloat 是全局函数,不属于任何对象。

parseFloat 将它的字符串参数解析成为浮点数并返回。如果在解析过程中遇到了正负号(+ 或 -)、数字 (0-9)、小数点,或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数。同时参数字符串首位的空白符会被忽略

如果参数字符串的第一个字符不能被解析成为数字,则 parseFloat 返回 NaN。提示:您可以通过调用 isNaN 函数来判断 parseFloat 的返回结果是否是 NaN。如果让 NaN 作为了任意数学运算的操作数,则运算结果必定也是 NaN。


parseInt得到的数值没有小数部分,其实parseInt中的Int就是integer,整数的意思。数值中含有小数的叫浮点数(Why?)

使用parseInt可以转换基数为2到36的任何数值,进制转换。

当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数(前提)。

的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。


3.8.3 松散相等操作符

因为JavaScript是弱类型的,所以在执行+-*/<等计算时,要确保数据的类型匹配,就算是相等操作符,也会发生同样的类型转换。

JavaScript提供两种相等测试机制,一种会执行隐式类型转换,一种不会。
相等操作符===当且仅当两个表达式的值相同,类型相同时才会返回true除了null)。而!==的结果自然与===截然相反。这两种相等操作符叫做严格相等操作符。
另一种测试机制==!=被人喻为严格操作符的"邪恶表亲"。==在测试之前会不顾一切地转换表达式类型,因此尽量不要使用它。
不过,==的转换是有意义的,只是要记住比难。JavaScript官方规范对此有详细描述,但我们这里可以简短归纳。

  • 要确定x == y的结果,JavaScript会尝试对它们进行类型转换,以便比较。

    1. 如果x和y中有一个字符串,有一个数值,JavaScript会把字符串转换成数值。

    2. 如果一个是布尔值,另一个不同,JavaScript会把布尔值转换成数值。

    3. 如果是一个对象,另一个是字符串是或数值,JavaScript会把对象转换成字符串或者数值。

    由于上述情况复杂,一般更倾向于使用严格相等操作符===!==。虽然松散相等操作符==!==可以像前面讨论的那样在代码提供一些快捷操作,即自动帮我们实现字符串到数值的转换,但转换结果很多情况下无法预见,规则很难牢记。

使用===!==,尽量不使用==!=


有时候,你可能必须某个值的类型。JavaScript有一个古怪的typeof操作符,能够返回关于表达式类型的字符串描述。说它古怪,是因为它的返回值有时候可信,有时候又不可信。

null的类型没有里有是object。数组的类型返回object倒可以理解,毕竟数组是对象。可为什么函数的类型又不是了呢?函数也是一种对象啊。


· 知道合伙人教育行家

毕业于河南师范大学计算数学专业,学士学位, 初、高中任教26年,发表论文8篇。


你对这个回答的评价是?

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 X属于y 的文章

 

随机推荐